2016-06-23 110 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