exec()通过命令行运行,但不通过web运行

时间:2010-12-10 17:01:39

标签: php linux

我有一个涉及exec()的PHP脚本,它可以从命令行运行,但不能在Web上下文中运行。脚本就是这样:

<?php exec('echo "wee" > /home/jason/wee.txt');

如果我将此脚本wee.php称为php wee.php并运行wee.txt,则可以正常运行并http://mysite.com/wee.php写入。{/ p>

如果我转到wee.txt,脚本会假装运行正常,但{{1}}实际上并未写入。

知道为什么会这样吗?

4 个答案:

答案 0 :(得分:3)

Web服务器以其他用户身份运行,该用户无权写入您的主目录。

答案 1 :(得分:1)

其他海报是正确的,表明Web服务器用户无权写入您的主目录。要查看它们是否正确,请尝试修改代码以写入/tmp/wee.txt。这应该是世界可写的。

另一种可能性是php可以配置为禁用调用exec()。见http://www.cyberciti.biz/faq/linux-unix-apache-lighttpd-phpini-disable-functions/

答案 2 :(得分:0)

您的网络服务器可能(正确)没有相应的权限来写入主目录。

答案 3 :(得分:0)

注意到您正在写信给/ home / jason。请注意,apache将是运行此命令的人(即,如果使用Ubunut或Debian,则为www-data用户)。该进程是否具有写入该文件夹的更正权限?