本文目錄一覽:
- 1、解析php中如何直接執行SHELL
- 2、我想用php執行shell語句:sudo curl –request POST –data-
- 3、LINUX+NGINX下的PHP shell_exec()函數執行linux命令 2019-08-08
解析php中如何直接執行SHELL
本篇文章是對php中直接執行SHELL的方法進行了詳細的分析介紹,需要的朋友參考下 $message=shell_exec(“sudo /usr/local/webserver/nginx/sbin/nginx -t 21”);echo “運行結果:”.$message.””;上面的語句可以直接在PHP中執行SHELL語句如果有返回值 那麼其中的 21 是必須的 他會重定向輸出strerr 轉到strout 輸出!否則返回結果會為空!
我想用php執行shell語句:sudo curl –request POST –data-
PHP中有這種函數可以執行shell的函數,如system(), exec(), shell_exec()等等,給你個鏈接,你可以自己去看
至於curl ,
LINUX+NGINX下的PHP shell_exec()函數執行linux命令 2019-08-08
LINUX+NGINX下的PHP shell_exec()函數執行linux命令
環境說明
手頭有一台linux的測試服務器,最近因為業務需要,需要通過php訪問另一台服務器去執行某些命令。
由於另一台服務器已經對這台服務器開了私鑰,所以在終端上是可以直接執行命令而不需要輸入密碼的。
問題
PHP無法使用exec命令,沒有任何返回值。
解決途徑
1.php.ini的配置有問題。
由於php是7.0以上的版本,取消了安全模式,所以考慮PHP.ini文件配置。
打開php配置文件,裡面有一行disabel_function的值,此處記錄了禁止運行的函數,在裡面講exec和shell_exec,system等函數刪除。
2.權限問題
修改以後PHP可以運行部分命令了,但是部分外部程序和命令仍然不能運行。使用sudo返回失敗。
於是運行“whoami”查看,環境下php-frm的運行角色是www。
於是修改sudoers文件。
vi /etc/sudoers
將www添加到
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
下面:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
www ALL=(ALL) NOPASSWD:ALL
然後找到Default requiretty這一行,把他注釋掉
# Default requiretty
ps:意思就是sudo默認需要tty終端,注釋掉就可以在後台執行了.
重啟nginx和php-fpm
service nginx restart
service php-fpm restart
這樣,PHP就可以在需要執行外部命令的時候使用sudo利用root身份執行命令,而不會報錯或者執行失敗了!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/158208.html