この操作には、sudo コマンドを実行するための PHP の権限が必要です。関連する設定については、次を参照してください:
apache/Nginx でシステム コマンドを実行するには、sudo 権限を使用する
スルーSvn フック機能では、SVN 操作を実行するときにいくつかの操作を自動的に実行できます。より一般的な操作は次のとおりです。
1. コードをローカルで更新して送信する場合、テスト環境またはオンライン環境でコードを最新バージョンに更新します。同時に
2. Svn を更新するときに、データベース関連の操作がある場合、SQL をリモート フック プログラムに送信して、関連する SQL を同時に実行できます
この例は使用されるフラグメントです私たちのプロジェクト チームによるローカル開発の実装 コード テストに合格した後、SVN をオンラインで送信すると、コードは自動的にオンラインで更新されるか、エクスポートされてパッケージ化されます
<?php//先切换到程序部署的目录$path = dirname(__FILE__);exec("cd {$path}"); exec("sudo /usr/bin/svn up", $output);print_r($output);
ここで、Apache を sudoer グループに追加する必要があります
この場合、sudo 設定ファイルを変更し、visudo コマンドを使用して設定ファイルを直接編集します。
1. コメントのデフォルト requiretty
Defaults requiretty を #Defaults requiretty に変更します。制御端子が必要ないことを示します。
それ以外の場合は sudo: 申し訳ありませんが、sudo を実行するには tty が必要です
2. 行を追加します Defaultsvisiblepw
それ以外の場合は sudo: no tty present and no askpassプログラムが指定されています
3 svn
を実行するためのアクセス許可を Apache ユーザーに付与します。たとえば、次の行を追加します。 apache ALL=(ALL) NOPASSWD: /usr/bin/svn
注: NOPASSWD を使用すると、次の場合に Apache ユーザーを対話的に入力する必要がなくなります。コマンドの実行 Password
最後のステップは、SVN