【问题标题】:exec() runs via command line but not webexec() 通过命令行而不是 web 运行
【发布时间】:2010-12-10 17:01:39
【问题描述】:

我有一个涉及exec() 的PHP 脚本,它可以从命令行正常运行,但不能在Web 上下文中运行。脚本很简单:

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

如果我调用这个脚本wee.php 并运行php wee.php,它工作正常并且wee.txt 被写入。

如果我转到http://mysite.com/wee.php,脚本会假装运行良好,但实际上并没有写入wee.txt

知道为什么会这样吗?

【问题讨论】:

    标签: php linux


    【解决方案1】:

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

    【讨论】:

    • 有什么办法可以做到这一点吗?比如暂时给予许可
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-25
          • 1970-01-01
          • 2020-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多