包含phpshellexecsudo的詞條

本文目錄一覽:

解析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-tw/n/158208.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-19 00:39
下一篇 2024-11-19 00:39

相關推薦

發表回復

登錄後才能評論