來源:互聯網
上載者:User
關鍵字
php
shell
shell-script
shell_exec
1.自己寫了一個php指令碼,用來通過WEB介面,執行一些shell指令碼
2.shell指令碼會用到sudo
3.sudo使用者已經設定了NOPASSWORD
4.手動在nobody使用者環境下,(su -s /bin/bash nobody),再執行shell指令碼是可以正常執行的,但是通過php執行,sudo那個語句會不執行
請教如何使用php執行呢?目前是使用shell_exec函數來執行的。
回複內容:
1.自己寫了一個php指令碼,用來通過WEB介面,執行一些shell指令碼
2.shell指令碼會用到sudo
3.sudo使用者已經設定了NOPASSWORD
4.手動在nobody使用者環境下,(su -s /bin/bash nobody),再執行shell指令碼是可以正常執行的,但是通過php執行,sudo那個語句會不執行
請教如何使用php執行呢?目前是使用shell_exec函數來執行的。
知道原因了,是,sudo: sorry, you must have a tty to run sudo
修改下系統配置就可以了。
這樣子相對比較危險啊。。。。首先不論怎麼實現。。。
sudo你需要sudo開啟PHP進程那麼php執行的都是sudo了啊
把www 使用者加到root組
2.shell指令碼會用到sudo
這句話的意思是,shell指令碼的執行需要sudo的許可權才行?
看起來這是一個很有危險性的操作啊,謹慎謹慎。
當然,不執行一般都是許可權問題導致的。在webserver環境執行PHP指令碼,以nginx為例,一般使用 www使用者,你在cli下可以,如果基於你的要求,首先www應該屬於root group
。
其次,便於調試,你可以嘗試在cli
sudo -Hu www php your.php
還有就是,shell_exec
函數會返回一個值,就是shell的輸出, err_log()
到檔案去看看唄。
php只能執行部分命令,即使用root也一樣。