特定のコードベースを同期させる必要がある 2 つのリモート サーバーがあります。最初にすべて設定しましたが、2 番目に設定しているときに問題が発生しました。
hg
それらは同じ場所にインストールされていません。hg <command>
エラーが返されるため、実行できません。
sh: hg: コマンドが見つかりません
そのため、フルパスを使用していましたが、2 つの別々のhg
場所では機能しません。
応答からのパスを実行して使用するのが賢明だと思ったwhich hg
ので、新しいコードを次に示します。
$hg = trim(`which hg`, "\n");
$output = `{$hg} pull -u`
しかし、そうで$hg
はNULL
ありません。2 番目のサーバーに SSH で接続すると、which hg
確実に機能することがわかります。コマンドに2>> path/to/log
エラーがあるかどうかを確認するために追加しましたが、ありませんでした。which
ログに書き込んでいることを確認したので、それとは関係ありませんでした。
私はセーフ モードで実行していませんshell_exec
。他のコマンドが機能するため、実行することは間違いなく許可されています。
シンボリックリンクを作成して、両方が同じパスを持ち、パスをハードコードするだけでよいことはわかっていますが、なぜ機能しshell_exec('which hg')
ないのか頭がおかしくなりました!!!