2011-07-26 111 views
28

我想让apache/php识别我的git的路径。我一直在研究和寻找网络的各个角落,无法找到如何做到这一点。基本上,无论我尝试什么,当我运行echo phpinfo();Apache Environment路径不会从/usr/bin:/bin:/usr/sbin:/sbin更改。当我在PHP中运行system('echo $PATH');时,它看起来是一样的。

系统信息:

  • 的Mac OSX(狮子)
  • 的Apache 2(如_www运行)
  • PHP 5.3.6

这是我曾尝试编辑到目前为止:

  • /etc/profile文件
  • 〜/ .bash_profile中
  • 〜/ .profile文件
  • 的/ etc /路径
  • /etc/path.d/{NEW_FILE}

没有什么我都试过这么远远改变了$PATH变量。有任何想法吗?

SOLUTION

因此,这里是最终的解决方案。我编辑的

/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> 
+0

[你试过将其关闭并重新打开它(http://www.youtube.com/watch?v=nn2FB1P_Mn8)? (不过,真的,你是否重新启动了Apache,因为这样做?) – cwallenpoole

+1

很棒的建议,但是。 –

+1

我在运行PHP''exec()''时遇到了问题,Apache shell的路径与我的Mac shell不同。这解决了我的问题。 – swt83

回答

30

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

更多在docs

+0

是的,我在这里读到另一个关于这个问题。我也试过这个。它不起作用。我得到了apache错误。 –

+0

我刚刚重试这个,它工作。不知道为什么它没有之前。但这似乎是解决方案。 –

+2

TBH,我不知道它在OS X上的工作原理是否相同,但在“正常”* nixes上,apache进程的重新启动命令不会重新启动进程,因此它不会获得更新的环境确实是它重新读取它的配置文件(s))。也许类似的事情在这里玩。 – Monolo

4

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

如果你想修改PHP环境变量,GETENV()和putenv()函数可以是一个更好的选择。

+0

也试过了。没有工作。 –

+1

如果直接修改PHP代码,'putenv()'只是一个很好的解决方案。如果您必须将其添加到您编写的每个PHP脚本/应用程序中,这不是一个好的永久解决方案。 –

+2

如何为/ users中不存在的_www用户编辑PATH var? –

0

Ubuntu的服务器,在/ etc/apache2的/ envvars中, 为CentOS的服务器,在/ etc/SYSCONFIG/httpd的, 补充:

export PATH=<your php cli path> 

,并重新启动Apache

0

与我在安装Derby时出现类似的问题。我解决它的方式是打开TextEdit。此时选择File> Open,然后按Shift + Command +。 ,这将允许您查看所有文件。前往用户目录并搜索名为“.profile”的文件。打开它,并添加出口变量=数值行,例如:

出口DERBY_HOME = /选择/本地/股/ JAVA /德比/

保存文档并重新启动终端,看是否改变进入影响。

0

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

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

我的问题是,PHP并没有发现,我们已经在/ usr/local/bin中安装的程序。一旦我们完成了上述所有工作,并在mac osx上表现出色。

+0

gist不见了.. :( – Tieme

3

重要提示为埃尔卡皮坦(道歉为新的答案 - 我没有足够的代表评论)

在OSX 10.11,在/系统/库文件夹是受保护的,所以文件不能编辑。

您需要:

  • 重启进入恢复模式(保持CMD + R启动声音后)
  • 一旦进入恢复模式,进入Utilities>终端
  • 运行: csrutil disable
  • 重新启动回到OSX - 您现在应该可以更改文件
  • 完成后,返回到恢复模式并运行 csrutil enable

希望帮助