我有一个涉及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}}实际上并未写入。
知道为什么会这样吗?
答案 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用户)。该进程是否具有写入该文件夹的更正权限?