Решение для 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);