shell_exec
NULL
コマンドが失敗した場合に戻ります。これはほぼ確実に起こっています...問題は理由です。を使用して見つけることはできませんshell_exec
。
代わりにexecを使用することをお勧めします。そうすれば、少なくとも呼び出しのステータスと何が問題になっているのかを把握できます。
http://www.php.net/manual/en/function.exec.php
これにより、システムの内部OS呼び出しの戻り値が入力されるいくつかの変数を設定できます。
$shell_output = array();
$status = NULL;
if($_GET['action']=='add'){
$output = shell_exec('git add *',$shell_output,$status);
print_r($shell_output)
print_r($status);
}
if($_GET['action']=='commit'){
$output = shell_exec('git commit -m "'.$_POST["txt"].'" ',$shell_output,$status);
print_r($shell_output)
print_r($status);
}
私の推測では、権限に問題があります。commit
in gitには、そのディレクトリの「.git」フォルダへの書き込み権限が必要です。
また、適切なディレクトリで操作していることを確認してください。cd
PHPインスタンスを実行しているapacheユーザーは、リポジトリがある適切なフォルダーに既に移動されている場合とされていない場合があります。cd path_to_repo && git commit
最初に正しいディレクトリに移動するには、コマンドにを追加する必要がある場合があります。まず、絶対パスを使用してこれをデバッグします。
アドバイスも一言...PHPベースのgitクライアントをセットアップしようとしている場合は、大量の失敗ケースを処理する必要があります。そのうちの1つは、このコードですぐにわかります...新しいファイルが変更されていないときにコミットします。これらのケースに関心を持つ必要がある場合は、コミュニティソリューションを検討することをお勧めします。
httpをサポートする優れたphpgitクライアントはありますか?