3

私は単純なPHPスクリプトを持っています:

exec('git pull origin master', $shell_output, $output);
print_r($shell_output);
print_r($output)

これを CLI 経由で呼び出すとphp git.php、正常に動作します。期待どおりの出力と戻り値 0 が得られます。Web ブラウザー経由でページにアクセスすると、戻り値 1 で失敗します。

ファイルのアクセス許可を 777 に設定しphp.ini、機能をブロックしないようにしましたexec()

4

2 に答える 2

3

Ates Goral の助けを借りて、問題を解決できました。

問題をデバッグするために、次を実行しました。

sudo -u www-data php git.php

ユーザーの下で実行したときにスクリプトがどのように動作するかを確認しwww-dataます。次の 2 つの問題がありました。

www-data独自の公開鍵を持っていませんでした。1 つ作成し、github リポジトリに追加しました。そして、.gitフォルダは によって読み取れませんでしたwww-data。これは、ディレクトリを ing して、I と apache の両方が属するchownグループにアクセス許可を与えることで修正されました。www-data

于 2012-10-27T05:57:18.843 に答える
3

CLI は、現在ログインしているユーザー (あなた) の資格情報で実行され、Web サーバー プロセスが使用するものとはおそらく異なります。exec('whoami')などを確認してください。

于 2012-10-27T05:37:45.083 に答える