我有一堆配置相同的服务器,并且都能正常工作,因此我将其应用于最近安装了18.04的全新服务器,但现在是:
$iptables = shell_exec('sudo /sbin/iptables -t raw -L --line-numbers 2>&1');
var_dump($iptables);
exit;
我知道了
string(54) "sudo: no tty present and no askpass program specified
我曾经有/ etc / sudoers这个精确的命令。但是现在,为了进行测试,我有:
www-data ALL=NOPASSWD: ALL
Defaults:www-data !requiretty
仍保持相同的输出:/。这只能通过nginx在php-fpm中失败。
如果我使用“ php -a”或通过cli启动此命令,它可以正常运行,所以我认为系统/配置程序可以,但仍然无法确定php-fpm的不同之处。
www-data@ns368791:/root$ php -a
Interactive mode enabled
php > $iptables = shell_exec('sudo /sbin/iptables -t raw -L --line-numbers 2>&1');
php > var_dump($iptables);
string(197) "Chain PREROUTING (policy ACCEPT) ....
我的设置是:
php --version
PHP 7.2.22-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Sep 2 2019 12:54:33) ( NTS )
root@ns368791:~# uname -a
Linux ns368791 4.15.0-64-generic #73-Ubuntu SMP Thu Sep 12 13:16:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
root@ns368791:~# nginx -v
nginx version: nginx/1.16.1
谢谢