Решение для PHP, не имеющего разрешения на выполнение команды exec в Linux
Связанные официальные ссылки
PHP exec Linux sudoers file Sudo CommandsМодификации при работе в режиме fastcgi
Когда PHP работает в режиме fastcgi, его разрешения наследуются от его основной программы. Давайте для объяснения возьмем apache в качестве примера. Сначала нам нужно найти учетную запись, под которой работает apache, а затем использовать vi или vim для редактирования файла / etc / sudoers и добавить в файл следующий справочный пример. В следующем содержимом сначала используйте команду ps, чтобы найти процесс apache httpd, просмотрите информацию об учетной записи в крайней левой части возвращенного результата, а затем отредактируйте файл sudoers, чтобы добавить авторизацию в учетную запись apache.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Модификации при работе в режиме php-fpm
При работе в режиме php-fpm он работает как отдельный процесс. Итак, мы сначала находим его работающую учетную запись, а затем выполняем операции авторизации, как указано выше.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Убедитесь, что изменения вступили в силу
После выполнения вышеуказанных операций мы изменили авторизацию, но она еще не вступила в силу. Нам необходимо перезапустить службу, чтобы изменения вступили в силу. В соответствии с нашей реальной ситуацией перезапустите службу apache или php-fpm. Затем выполните команду exec, чтобы просмотреть возвращенный результат.Если возвращенный результат получен нормально, он успешен.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);