2016-06-23 22 views
2

私は奇妙な問題に遭遇しています。ボタンをクリックすると、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 
+3

なぜphp curlを使用しないのですか? –

+1

私はできると思います。私はちょうどこれがなぜ機能していないのか不思議です...私はそれが2つのファイルが作成されていない理由をスクリプトを実行することを意味...私はちょうど今起こっていることを理解したいです。 – iamcyruss

+0

私は許可の問題 –

答えて

2

問題を見つけて修正しました。 SElinuxだった。多分私はCentOS7でこれをやっていたと言わざるを得ないでしょう。私がしたことは、新しいフォルダを作成し、所有者のApacheを作成して、Apacheに書き込むことを許可したことです。

chown apache:apache /folder 
sudo chcon -t httpd_sys_rw_content_t /folder 
関連する問題