2

execコマンドを実行しようとしていますが、問題が発生しています。次のコードを実行すると、ブラウザで実行しても機能しません。しかし、コピーの出力を取得$strして端末に貼り付けると、問題なく動作します。これを引き起こしているのは何ですか?どうすれば修正できますか?現在、私はで実行していlocalhostます。

$php_location = "/usr/bin/php";
$data = str_replace("\"", "\\\"", json_encode($_POST));
$cwd = __DIR__;

shell_exec($str = "$php_locataion $cwd/phpExcel.php \"$data\" > /home/ryannaddy/Desktop/phpExcel.txt &");

echo $str;

shell_execこれが呼び出しているファイルです:

<?php
set_time_limit(0);
$args = $argv[1];

$data = json_decode(str_replace("\\\"", "\"", $args), true);
echo "hello!";
4

2 に答える 2

4

ブラウザで実行すると、適切な権限を持っていない可能性のあるWebサーバーのユーザーとして実行されます。ターミナルで実行すると、ログインしているユーザーとして実行されます。apache(apacheを使用していると仮定)ユーザーがスクリプト/ディレクトリーに対する正しい権限を持っていることを確認してください。

于 2013-03-11T14:58:31.687 に答える
2

この問題は、アクセス許可に関係している可能性があります。

シェルから何かを実行すると、ユーザー アカウントで実行されます。Web サーバーは別の方法で実行され、通常は何に対してもアクセス許可がほとんどありません。Web サーバーのアカウントに適切な権限を付与するか、別のアカウントでサーバーを実行してください (お勧めしません!)。

于 2013-03-11T14:58:50.017 に答える