[英]php shell_exec with sudo commands not working
我在 (/opt/lampp/htdocs/xampp/test.php) 中創建了一個包含代碼的文件 test.php
$data = shell_exec("sudo php -v");
var_dump($data);
但它給了我結果NULL
我正在使用 PHP 5.6.11-1ubuntu3.1 (cli),所以我也在 /etc/sudoers 文件中添加了行
www-data ALL=NOPASSWD: /opt/lampp/htdocs/xampp/test.php
我也嘗試過添加
www-data ALL=NOPASSWD: ALL
但似乎沒有任何效果。 請幫忙
編輯sudoers文件(使用visudo
),並添加一條規則,該規則允許Web服務器用戶無需密碼即可運行命令。 例如:
www-data ALL=NOPASSWD: /path/to/script
這將允許該特定用戶在該特定腳本上調用sudo
而不提示您輸入密碼。
嘗試指定到PHP二進制文件的完整路徑.. /usr/bin/php
,如果你不知道它,使用找到它: which php
$data = shell_exec("/usr/bin/php -v"); var_dump($data);
您還可以檢查php.ini限制可用命令集?
; When safe_mode is on, only executables located in the safe_mode_exec_dir ; will be allowed to be executed via the exec family of functions. ; http://php.net/safe-mode-exec-dir safe_mode_exec_dir =
您應該更改mpm_itk模塊的最小uid / gid:
$ cat /etc/apache2/modules.d/00_mpm_itk.conf
<IfDefine MPM_ITK>
LoadModule mpm_itk_module modules/mpm_itk.so
# LimitUIDRange 1000 2000
# LimitGIDRange 1000 2000
LimitUIDRange 0 2000
LimitGIDRange 0 2000
</IfDefine>
sudo adduser USERNAME
sudo usermod -aG sudo USERNAME
如果您使用默認憑據登錄,則需要在 ubuntu 中創建一個新用戶,然后切換到新創建的用戶。
在這里你只需要用你的新用戶名替換 USERNAME
su - USERNAME
最后你可以使用 sudo 的每個命令
shell_exec('echo "yourpassword" | sudo -u yourusername -S | sudo --version')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.