mac上的apache2的$ PATH环境variables

我试图让Apache / PHP认识到我的混帐path。 我一直在研究和寻找networking的各个angular落,无法find如何做到这一点。 基本上,无论我尝试什么,当我运行echo phpinfo(); Apache Environmentpath不会从/usr/bin:/bin:/usr/sbin:/sbin更改。 而当我运行system('echo $PATH'); 在PHP中,它读取相同。

系统信息:

  • Mac OSX(狮子)
  • Apache 2(作为_www运行)
  • PHP 5.3.6

以下是我尝试编辑到目前为止:

  • / etc / profile文件
  • 在〜/ .bash_profile
  • 〜/ .profile文件
  • 在/ etc /path
  • /etc/path.d/{NEW_FILE}

我迄今为止所尝试的任何内容都改变了$PATHvariables。 有任何想法吗?

所以这是最终的解决scheme。 我编辑了

 /System/Library/LaunchDaemons/org.apache.httpd.plist 

并补充说

 <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin</string> </dict> 

您可以在/System/Library/LaunchDaemons/org.apache.httpd.plist设置PATH环境变量。

更多在文档中 。

你是否更新用户'_www'的PATH环境变量? Apache将从用户自身运行中读取环境变量。 或者,在更新PATH环境变量后,您看起来没有重新启动Apache。

  • 看看以前的讨论:
    • 如何将路径添加到Apache PATH变量?
    • 在OS X中设置环境变量?

如果你想在PHP中修改环境变量,getenv()和putenv()可以是更好的选择。

  • getenv: http : //php.net/manual/en/function.getenv.php
  • putenv: http ://www.php.net/manual/en/function.putenv.php

    $ path = getenv('PATH'); putenv(“PATH = $ path:/ new_path_that_you_want_to_add”);

El Capitan的重要提示(对新答案抱歉 – 我没有足够的代表发表评论)

在OSX 10.11上,/ System / Library文件夹受到保护,因此文件无法编辑。

你需要:

  • 重新启动进入恢复模式(启动后按住CMD + r)
  • 一旦进入恢复模式,进入实用程序>终端
  • 运行: csrutil disable
  • 重新启动到OSX – 您现在应该可以更改文件
  • 完成后,返回到恢复模式并运行csrutil enable

希望有所帮助

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

 export PATH=<your php cli path> 

并重新启动Apache

类似的问题,我正在安装德比。 我解决这个问题的方式是打开TextEdit。 选择File> Open,此时按下Shift + Command +。 ,这将允许您查看所有文件。 前往用户目录并搜索名为“.profile”的文件。 打开它并添加导出VARIABLE = Value行例如:

export DERBY_HOME = / opt / local / share / java / derby /

保存文档并重新启动您的终端,以查看更改是否已经生效。

我创造了这个帮助我从上面的信息出来的要点:

https://gist.github.com/srayhunter/5208619

我的问题是,PHP没有找到我们已经安装在/ usr / local / bin下的程序。 一旦我们做了上述这一切工作,并发挥了很好的mac osx。