У меня есть куча серверов с одинаковой конфигурацией, и все работает безупречно, поэтому я применил то же самое на недавно установленной 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
Все тот же вывод: /. Это только сбой в php-fpm через nginx.
Если я использую "php -a" или запускаю эту команду через cli, она работает нормально, поэтому я думаю, что конфигурация system / sudoers в порядке, но все же я не могу понятьчто отличается в 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
Спасибо