我在(/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
但似乎没有任何效果。请帮忙
答案 0 :(得分:3)
编辑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 =
答案 1 :(得分:0)
您应该更改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>