1. まず自動デプロイの原理について話しましょう. 通常、コードをプッシュすると、Webhook に設定された URL を自動的にリクエストして、リクエストとレスポンスを完了することができます。したがって、設定した URL アドレスによって要求された PHP ファイルの内容がコマンド ラインの git Push コマンドを実行するものである限り、毎回ローカルでコードをリモート エンドにプッシュでき、サーバーは自動的に git pull と pull を実行します。最新のブランチ。
2. 次に、設定する必要があるのは 2 か所です:
①git プロジェクトの Webhook 設定:
通常、コードをホストするプラットフォームでは、これはプロジェクト設定に 1 つあります。通常、Webhook 設定には URL 設定というコンテンツが 1 つだけあります。ここでは http://www.xxxxx.com/webhook.php
(明らかに、私は Web サイトのルート ディレクトリにいます。webhook.php ファイルをスローすると、コードをリモート エンドにプッシュするたびに、Web サイトの webhook.php ファイルがアクセスされます)
②フック ファイルサーバー側 (コードが実行される場所) ( webhook.php) の設定:
$command = 'cd 代码位置'; $output = shell_exec($command); $command = 'git pull'; $output = shell_exec($command); print $output;
ここに 2 つの簡単な文があります。最初に cd コマンドで対応するディレクトリに入り、次に git pull コマンドを実行します
主にshell_exec()関数で使用します。PHPがコマンドラインを実行するための関数です。Baiduで学生向けに詳しく紹介しています。
ここで注意したいのは、以前にshell_exec()コマンドを実行したところ、サーバーが応答しなくなって固まってしまったので、
$output = shell_exec('ls'); print_r($output);
コマンドを使ってテストしたところ、タイムアウトになったこともわかりました。これは非常に奇妙だったので、そのままにしておきました。結局のところ、それはわずか 3 ~ 5 行のコードであり、なぜタイムアウトを要求し続けるのかわかりませんでした。 2 か月後、元の印刷物の文字列エンコーディングに問題があるのではないかと考えました。したがって、次のコード行があります。
$encode = mb_detect_encoding($output, array('ASCII','GB2312','GBK','UTF-8')); $trans = iconv( $encode, "UTF-8",$output); print $trans;
これで実行できます。 。 。以前、shell_exec() がなぜタイムアウトを繰り返していたのか思い出せませんが、再びこのエラーに遭遇した友人は、返された内容を印刷しないようにするか、印刷された内容をエンコードしないようにしてください。しかし、この忌まわしい問題に遭遇する友人もまだ少数いると思います。
PHP 関連の知識について詳しくは、PHP チュートリアルをご覧ください。
以上がWebhook を使用して PHP プロジェクトを自動的にデプロイするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。