我遇到了一个奇怪的问题。我有一个按钮设置,当它被点击时,它将运行我使用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
我会在权限问题上下注 –