2016-06-23 144 views
2

我遇到了一個奇怪的問題。我有一個按鈕設置,當它被點擊時,它將運行我使用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 
+3

爲什麼不使用php curl? –

+1

我的意思是我想我可以。我只是好奇,爲什麼這不起作用......我的意思是它運行的腳本,爲什麼不創建這兩個文件...我只是想了解現在發生了什麼。 – iamcyruss

+0

我會在權限問題上下注 –

回答

2

我發現了問題並修復了它。這是SElinux。也許我應該提到我在CentOS7上這樣做。我所做的是創建一個新文件夾,並讓所有者apache然後允許apache寫信給它。

chown apache:apache /folder 
sudo chcon -t httpd_sys_rw_content_t /folder