2011-07-26 168 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

希望幫助