使用PHP运行Shell脚本
我遇到了一个奇怪的问题。我有一个按钮设置,当它被点击时,它将运行我用PHP创建的shell脚本。shell脚本由两个curl命令组成使用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
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具有不同的视图。