【问题标题】:How do I add paths to the Apache PATH variable?如何将路径添加到 Apache PATH 变量?
【发布时间】:2011-02-19 17:31:03
【问题描述】:

我在 apache2 的 custom.conf 文件中设置了这个:

SetEnv PATH $PATH:/opt/local/lib/mysql5/bin:/this-is-a-test

但是它不起作用。当我打电话时:

$hey = shell_exec('env'." 2>&1"); var_dump($hey);

我明白了:

... PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin:/opt/local/bin

有人可以帮忙吗?我在 Mac 上使用 Macports 作为我的开发环境。 谢谢!

【问题讨论】:

    标签: php apache path


    【解决方案1】:

    您尝试从 Apache 中设置 PATH 对我来说似乎非常奇怪。相反,您应该为您的系统设置 PATH。在 Mac OS X 中有几种方法可以做到这一点:

    用户特定
    对于单个用户,您可以编辑 ~/.profile 并添加:

    export PATH="$PATH":/opt/local/lib/mysql5/bin:/this-is-a-test
    

    或者您可以创建/编辑 ~/.MacOSX/environment.plist 并以这种方式定义 PATH。

    系统范围
    在较新版本的 Mac OS X 上,有一个名为“/etc/paths”的文件和一个名为“/etc/paths.d”的文件夹,允许您扩展默认路径。基本上,您将在“/etc/paths.d”中创建一个文件,其中列出了您希望添加到默认路径的所有路径。在不支持此功能的 Mac OS X 版本上(您可以根据“/usr/libexec/path_helper”是否存在来判断),可以通过将上面的导出语句放在 /etc/profile 中来编辑所有用户的默认路径。

    【讨论】:

    • 迈克尔,感谢您的回复。我的 .profile 和 .bash_login 文件都有指定的路径,但在 Apache 上运行的 PHP 无法识别它们。我刚刚尝试了 /etc/paths.d/ 选项,但这似乎也不起作用,我是否必须重新启动机器才能生效?我重新启动了 apache - 什么都没有。
    • @TylerNZ,您需要关闭,然后重新打开终端,然后从定义了这些变量的环境中重新启动 Apache。
    • 试过了,还是什么都没有……我认为需要为 apache 或 root 用户做一些具体的事情,哪个 apache 正在运行?
    • PHP shell_exec('env');返回:DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib: TERM=xterm-color SHELL=/bin/bash USER=root SUDO_USER=joelt SUDO_UID=501 SSH_AUTH_SOCK=/tmp/launch-BAXRDR/Listeners __CF_USER_TEXT_ENCODING=0x0:0:0 USERNAME= root PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/ usr/X11/bin:/opt/local/bin _=/usr/bin/env PWD=/Users/joelt/Sites LANG=en_US.UTF-8 HOME=/Users/joelt SUDO_COMMAND=/opt/local/apache2/ bin/apachectl restart SHLVL=2 LOGNAME=root DISPLAY=/tmp/launch-dNcZy6/org.x
    • 嗯,如果你真的停止并启动 apache,它似乎解决了这个问题。简单地重新启动并没有成功。很奇怪。
    【解决方案2】:

    对于 ubuntu 服务器,在 /etc/apache2/envvars 中, 对于 centos 服务器,在 /etc/sysconfig/httpd 中, 添加:

    export PATH=<your php cli path>
    

    然后重启apache

    【讨论】:

      【解决方案3】:

      这个问题很老,但如果它对其他人有帮助,如果您使用 Windowsmod_fcgid,请检查您的 httpd.conf 中是否设置了 FcgidInitialEnv,并将其删除到采用系统路径。

      【讨论】:

        【解决方案4】:

        Macports Apache 2.4 安装

        我发现让它在重新启动时保持不变的唯一方法是编辑 macports apache2.plist。我采取的步骤:

        1.sudo /opt/local/sbin/apachectl stop

        2.编辑plist:/opt/local/etc/LaunchDaemons/org.macports.apache2/org.macports.apache2.plist

        并添加:

        <key>EnvironmentVariables</key>
        <dict>
            <key>PATH</key>
            <string>/usr/bin:/bin:/usr/sbin:/sbin:{add paths here}</string>
        </dict>
        

        3.sudo port unload apache2

        4.sudo port load apache2

        5.sudo /opt/local/sbin/apachectl start

        路径会在重新启动时出现。但是,plist 可能会在我下一次更新 macports 时被清除。

        编辑:事实证明这是真的。我通过相关的 macports 更新升级到 Mojave,并且不得不重新应用上述步骤

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-02
          • 2014-03-10
          • 2012-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多