【问题标题】:OSX Apache : allow execution of shell command for PHP script - include pathOSX Apache:允许执行 PHP 脚本的 shell 命令 - 包含路径
【发布时间】:2014-03-03 20:12:15
【问题描述】:

我在 OSX 服务器上运行一个网站,需要执行pdftotext,它安装在/usr/local/bin 中。但是,命令不在 Apache 路径中似乎存在问题。

我首先确认我可以执行 shell 脚本。 <?php shell_exec('whoami'); ?> 返回_www

但是,当我运行以下命令时:

 $cmd = 'has pdftotext 2>&- || echo 1';
 $out = shell_exec($cmd);
 echo $out;

它返回“1”表示它无法访问该命令。

从终端运行的相同命令什么也不返回(我可以毫无问题地访问该程序)。

当我运行shell_exec('env'."2>&1") 时,/usr/local/bin 确实不在路径中。 OSX Mountain Lion 服务器上的 Apache2 在哪里设置?

更新

请看下面的答案

【问题讨论】:

    标签: php macos apache shell path


    【解决方案1】:

    我在这里找到了如何修改 Apache PATH 的答案:https://gist.github.com/thebigdog/5208619

    我需要修改/System/Library/LaunchDaemons/org.apache.httpd.plist,添加

    <key>PATH</key>
    <string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string>
    

    到现有的&lt;key&gt;EnvironmentVariables&lt;/key&gt; 定义。所以最后它看起来像这样:

    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string>
        <key>SERVER_INSTALL_PATH_PREFIX</key>
        <string>/Applications/Server.app/Contents/ServerRoot</string>
        <key>XPC_SERVICES_UNAVAILABLE</key>
        <string>1</string>
    </dict>
    

    一旦我重新启动了 Apache 服务器,就添加了路径并且正确执行了 shell 命令。

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 2019-07-20
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      相关资源
      最近更新 更多