使用PHP运行Shell脚本

使用PHP运行Shell脚本,php,linux,bash,shell,curl,Php,Linux,Bash,Shell,Curl,我遇到了一个奇怪的问题。我有一个按钮设置,当它被点击时,它将运行我用PHP创建的shell脚本。shell脚本由两个curl命令组成 curl -H "Accept: application/xml" "http://blah/blah" > /tmp/listofchannels.xml curl -H "Accept: application/xml" "http://blah/blah" > /tmp/listofnodes.xml echo "Done!" 我使用了shel

我遇到了一个奇怪的问题。我有一个按钮设置,当它被点击时,它将运行我用PHP创建的shell脚本。shell脚本由两个curl命令组成

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\u exec()
exec()
,和
system()
用PHP运行这个脚本,它成功运行了。但它不会将输出重定向到文件
/tmp/listofchannels.xml
/tmp/listofnodes.xml

我在httpd错误日志中使用了
tail
,它显示了卷发运行。我甚至会看到
完成system()
时,代码>会显示在我的网页上,但它不会创建文件

如果我自己从命令行运行脚本,它将完全工作。文件确实会被创建,但前提是我自己从命令行运行脚本,而不是使用PHP代码

有人知道为什么吗

我认为这可能是权限问题,但我没有错误地指出我没有权限

任何帮助都会很好


更新


我发现了问题并解决了它。是塞利努克斯。也许我应该提到我是在CentOS7上做的。 我所做的是创建一个新文件夹,并让所有者apache允许apache对其进行写入

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

我发现了问题并解决了它。是塞利努克斯。也许我应该提到我是在CentOS7上做的。我所做的是创建一个新文件夹,并让所有者apache允许apache对其进行写入

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

为什么不使用php curl?我的意思是我想我可以。我只是好奇为什么这不起作用。。。我的意思是它运行脚本,为什么不创建两个文件。。。我只是想了解现在发生了什么。我敢打赌权限问题您可以将
true>/doesntexist/foo
添加到脚本中,并检查
bash:/doesntexist/foo的错误日志:没有这样的文件或目录
,以确保您查找的位置正确。如果您没有看到它,您应该找到错误的方向。如果您确实看到了它,那么您的web服务器可能是chrooted的,因此对您的FS具有不同的视图。