我目前正在開發自己的小項目,但我遇到了一些小問題:我想將$ PATH環境變量設置爲./bin
,這樣當我使用exec()
和類似的函數時,它只會搜索那個二進制文件目錄(除非我明確告訴它)。
我已經試過putenv()
,除非我啓用了安全模式,否則我不會工作,我不想這樣做;我也試過apache_setenv()
,但那似乎也不奏效。
我還想嘗試其他解決方案嗎?
(我使用的是Linux機器用PHP 5.3.2)
我目前正在開發自己的小項目,但我遇到了一些小問題:我想將$ PATH環境變量設置爲./bin
,這樣當我使用exec()
和類似的函數時,它只會搜索那個二進制文件目錄(除非我明確告訴它)。
我已經試過putenv()
,除非我啓用了安全模式,否則我不會工作,我不想這樣做;我也試過apache_setenv()
,但那似乎也不奏效。
我還想嘗試其他解決方案嗎?
(我使用的是Linux機器用PHP 5.3.2)
而不是路徑設置爲bin
並調用foo
,你爲什麼不只是明確援引bin/foo
?
如果您爲您的用戶設置了路徑,並且您的腳本以您的用戶身份運行,則唯一需要做的是爲您的shell設置此路徑,但是您的腳本以ie運行。 apache用戶(www數據中的debian-like系統),這個工作,如果你想設置僅在特定情況下,你應該設置此路徑爲用戶explicte
以改變在Mac OS X Apache使用該路徑的方式在此描述: http://lists.apple.com/archives/macos-x-server/2008/Sep/msg00433.html
如該交指出:
[A] DD以下文本[在F ILE
/System/Library/LaunchDaemons/org.apache.httpd.plist
]在第五 行:<key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</ string> </dict>
使用此處查看
launchd.plist(5)
的手冊頁語法的詳細信息,我 。如果你需要爲CLI會話中運行你的PHP命令,你也可能 需要添加
/opt/local/bin
作爲一種新的路徑下/etc/paths.d
工作。例如,如下所示:shell> sudo echo "/opt/local/bin" >> /etc/paths.d/macports
請參見
path_helper(8)
的手冊頁。
您的意思是「除非我禁用了安全模式」? – greg0ire 2010-08-23 18:25:55
@ greg0ire,不,它實際上不會工作,除非我已啓用安全模式。在手冊頁上查看:http://php.net/manual/en/function.putenv.php – Frxstrem 2010-08-23 18:29:17
「這些指令只有在啓用安全模式時纔有效!」從http://php.net/manual/en/function.putenv.php。這很愚蠢。 – muhmuhten 2010-08-23 18:30:06