我在最近更新到PHP 5.2.17的FreeBSD服務器上運行了一些PHP網站,之後exec("something")
停止工作,並且我被要求編寫exec("/full/path/something")
。php exec()搜索路徑系統範圍設置
由於腳本在可執行文件位於不同位置的不同計算機上運行,因此寫入完整路徑是不可接受的。
運行從PHP passthru("set")
揭示了PATH變量(用戶 「WWW」)是:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
我需要PATH指向PHP safe_mode_exec_dir之目錄:
PATH=/usr/phpsafe_bin
在運行putenv("PATH=/usr/phpsafe_bin")
PHP解決了這個問題,但是我需要一個解決方案來修復這臺機器上運行的所有PHP腳本在全局級別上的問題,換句話說就是更改php.ini,Apache設置或其他系統設置。
希望有人可以提供一個很好的解決方案,甚至可以解釋爲什麼這改變了PHP更新。似乎沒有關於如何確定exec()
和朋友的搜索路徑的PHP文檔。
你能簡單地啓動Apache之前修復了'PATH'環境變量在'/等/ rc'?您可以使用符號鏈接將分散在您的服務器上的程序填充到_fixed_目錄中:/ usr/local/php_bin /'? – sarnold 2011-04-29 08:16:14
請注意,[safe_mode已棄用](http://us2.php.net/manual/en/features.safe-mode.php),您可以通過關閉它(然後雙擊「檢查所有對'exec'的調用......硬編碼路徑名稱畢竟不是一個壞主意!) – Charles 2011-04-29 08:21:47