2012-09-06 49 views
1

使用shell_exec()在我的系統上觸發任何命令時,我的日誌中會出現「not found」錯誤,但這不會發生在hall命令中。在PHP中使用shell_exec只會返回「未找到」錯誤

我可以使用shell_exec('dig google.com');,並獲得適當的輸出,但是當我嘗試觸發shell_exec('/path/to/my.sh param1 param2');我結束了

sh: /path/to/my.sh: not found 

我在很茫然,我本來打算這樣生成的新用戶在Debian上有一些聰明的adduser命令,但是當PHP試圖觸發它時(與我自己的自定義shell腳本文件相同的錯誤,所以我有sh: adduser: not found

在測試環境中,apache會話使用ITK以root身份運行,並且我也確保了我自己的shell腳本正確的權限和可執行

運行PHP 5.3.3-7 + squeeze14與Zend 2.3.0和了Suhosin 0.9.32.1

+0

你確定你的shell文件的路徑是正確的嗎?順便說一句'adduser'在'/ usr/sbin'中。目錄'/ sbin'和'/ usr/sbin'可能不在你的'$ PATH'變量中(這些只是在root用戶的情況下添加的,請檢查'/ etc/profile')。 – vstm

+0

@vstm是的我已經檢查過我的腳本文件的路徑是否正確,我也通過觸發我的'shell_exec'中傳遞的確切命令作爲我的shell中的獨立命令來確認它的工作原理。 – Clorith

+0

您是否驗證過PHP腳本是以root身份執行的('/ usr/bin/id')?如果沒有,進程的用戶是否擁有讀取/執行路徑中所有目錄的權限?你有沒有啓用SELinux? – vstm

回答

0

剛剛嘗試exec(),而不是shell_exec()執行的命令。它會工作

+0

不幸的是,exec()的結果與shell_exec()相同。 – Clorith

相關問題