私は奇妙な問題に遭遇しています。ボタンをクリックすると、PHPを使用して作成したシェルスクリプトが実行されます。シェルスクリプトは2つのカールコマンドです。PHPを使用してシェルスクリプトを実行
curl -H "Accept: application/xml" "http://blah/blah" > /tmp/listofchannels.xml
curl -H "Accept: application/xml" "http://blah/blah" > /tmp/listofnodes.xml
echo "Done!"
私はPHPでこのスクリプトを実行するshell_exec()
、exec()
、およびsystem()
を使用しましたし、それが正常に実行されます。しかし、出力をファイル/tmp/listofchannels.xml
と/tmp/listofnodes.xml
にリダイレクトしません。
私はhttpdエラーログにtail
を使用しており、カールを表示しています。 system()
を使用しても私のWebページにDone!
が表示されますが、ファイルは作成されません。
スクリプトをコマンドラインから直接実行すると、完全に機能します。ファイルは作成されますが、PHPコードを使用する代わりにコマンドラインからスクリプトを実行する場合にのみ作成されます。
誰にも理由がありますか?
おそらくそれはアクセス権の問題だと思っていましたが、アクセス権がないというエラーは表示されません。
助けがあれば助かります。
更新:
私は問題を発見し、それを修正しました。 SElinuxだった。多分私はCentOS7でこれをやっていたと言わざるを得ないでしょう。 私がしたことは、新しいフォルダを作成し、所有者のApacheを作成して、Apacheに書き込むことを許可したことです。
chown apache:apache /folder
sudo chcon -t httpd_sys_rw_content_t /folder
なぜphp curlを使用しないのですか? –
私はできると思います。私はちょうどこれがなぜ機能していないのか不思議です...私はそれが2つのファイルが作成されていない理由をスクリプトを実行することを意味...私はちょうど今起こっていることを理解したいです。 – iamcyruss
私は許可の問題 –