Как выйти из функции exec, используя nginx, php-fpm и Arch Linux

Я могу войти как любой пользователь и sudo whoami без пароля и получить «root». Когда я попробую это с php -r 'echo exec("sudo whoami");' это работает независимо от того, какой я пользователь. Но когда я запускаю это через веб-сервер (nginx), я ничего не получаю. Что дает?

ps xau | grep php

root 207 0.0 2.6 19876 4992 ? Ss 23:16 0:00 php-fpm: master process (/etc/php/php-fpm.conf)
http 228 0.0 1.6 19876 3152 ? S 23:16 0:00 php-fpm: pool www
http 229 0.0 1.6 19876 3144 ? S 23:16 0:00 php-fpm: pool www
root 326 0.0 0.3 2504 692 pts/0 S+ 23:59 0:00 grep php

1

Решение

Я добавил 2>&1 в моей команде, чтобы увидеть ошибки, и он сказал: «sudo: команда не найдена».

Затем я добавил putenv('PATH=' . getenv('PATH') . ':/usr/sbin'); на мой PHP-скрипт, и это сработало.

0

Другие решения

Других решений пока нет …