web: php 執行第三方命令或者shell指令碼
阿新 • • 發佈:2020-08-04
今天在web-php後端指令碼中執行外部shell指令碼,使用了相對路徑 ./../xx.sh 但是執行不成功,後來換成了絕對路徑執行成功了,
考慮到因為php指令碼包含導致的,路徑不對了,但是使用絕對路徑又不太好
可以使用
$cmd = __DIR__ . "/../xx.sh";
參考:
【https://kb.kutu66.com/php/post_11452405】
從PHP執行外部命令的一些常見故障來自 shell:
-
命令使用相對路徑,但PHP是從任意位置啟動的:
-
PHP和 shell 使用不同的使用者憑據執行。 當PHP通過web伺服器執行時,這種情況常常發生。
-
PHP和 shell 執行不同的命令。 很多人都會像
exec("foo $bar")
一樣呼叫內容,甚至不檢查"foo $bar"
包含什麼內容。 -
未完成錯誤檢查。 最簡單的方法是捕獲和列印標準輸出。標準錯誤。狀態程式碼,當然還有所有PHP錯誤訊息,包括警告和通知。
- 你可以將stderr重定向到 sdtout 。
- 可以使用允許捕獲更多資訊的PHP函式,例如exec()。
-
不允許web伺服器在作業系統級別執行該命令。
- 檢視 se linux或者類似工具。