2010-12-10 14 views
1

exec()というPHPスクリプトがありますが、これはコマンドラインからは正常に動作しますが、Webコンテキストでは正常に動作しません。exec()はコマンドライン経由で実行されますが、Webでは実行されません

<?php exec('echo "wee" > /home/jason/wee.txt'); 

私はこのスクリプトwee.phpを呼び出してphp wee.phpを実行した場合、それは正常に動作してwee.txtが書き込まれます:スクリプトは、単にこれです。

http://mysite.com/wee.phpに行った場合、スクリプトは正常に実行されているように見せかけますが、wee.txtは実際には書き込まれません。

これはなぜ起こっているのですか?

答えて

3

Webサーバーは異なるユーザーとして実行され、そのユーザーにはホームディレクトリへの書き込み権限がありません。

+0

これを行う方法はありますか?一時的に許可を与えるように – Thejas

0

あなたのWebサーバーは、おそらく(正しく)ホームディレクトリに書き込むための適切な権限を持っていません。

0

あなたが/ home/jasonに書き込みを行っていることに気付きました。 apacheはこのコマンドを実行するものです(つまり、UbunutまたはDebianを使用している場合はwww-dataユーザー)。プロセスには、そのフォルダに書き込む権利がありますか?

1

他のポスターは、Webサーバーユーザーにホームディレクトリへの書き込み権限がないことを示唆しています。正しいかどうか確認するには、/tmp/wee.txtに書き込むようにコードを修正してみてください。それは世界的な書き込み可能なはずです。

もう1つの可能性は、phpをexec()の呼び出しを無効にするように設定できることです。 http://www.cyberciti.biz/faq/linux-unix-apache-lighttpd-phpini-disable-functions/

+0

を無効にすると、エラーがPHPによってスローされますか? – ajreal

関連する問題