我遇到了一個奇怪的問題。我有一個按鈕設置,當它被點擊時,它將運行我使用PHP創建的shell腳本。 shell腳本是兩個curl命令。使用PHP運行Shell腳本
curl -H "Accept: application/xml" "http://blah/blah" > /tmp/listofchannels.xml
curl -H "Accept: application/xml" "http://blah/blah" > /tmp/listofnodes.xml
echo "Done!"
我用shell_exec()
,exec()
,並system()
運行此腳本使用PHP和它成功運行。但它不會將輸出重定向到文件/tmp/listofchannels.xml
和/tmp/listofnodes.xml
。
我在httpd錯誤日誌上使用了tail
,它顯示捲髮運行。我甚至會在使用system()
時在我的網頁上看到Done!
,但它不會創建這些文件。
如果我自己從命令行運行腳本,它完全可以工作。這些文件確實被創建,但只有我自己從命令行運行腳本而不是使用PHP代碼。
有沒有人有任何想法爲什麼?
我想也許這是一個權限問題,但我沒有錯誤,指出我沒有權限。
任何幫助將是偉大的!
更新:
我發現這個問題,並固定它。這是SElinux。也許我應該提到我在CentOS7上這樣做。 我所做的是創建一個新文件夾,並讓所有者apache然後允許apache寫信給它。
chown apache:apache /folder
sudo chcon -t httpd_sys_rw_content_t /folder
爲什麼不使用php curl? –
我的意思是我想我可以。我只是好奇,爲什麼這不起作用......我的意思是它運行的腳本,爲什麼不創建這兩個文件...我只是想了解現在發生了什麼。 – iamcyruss
我會在權限問題上下注 –