Solución para que PHP no tenga permiso para ejecutar el comando exec en Linux

Referencias oficiales relacionadas

PHP exec Linux sudoers file Sudo Commands

Modificaciones al ejecutar en modo fastcgi

Cuando PHP se ejecuta en modo fastcgi, sus permisos se heredan de su programa anfitrión. Tomemos apache como ejemplo para explicar. Primero, necesitamos encontrar la cuenta bajo la cual se está ejecutando apache y luego usar vi o vim para editar el archivo / etc / sudoers, y agregar el siguiente ejemplo de referencia al archivo. En el siguiente contenido, primero use el comando ps para encontrar el proceso de apache httpd, mire la información de la cuenta en el lado izquierdo del resultado devuelto y luego edite el archivo sudoers para agregar autorización a la cuenta de apache.

            ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
        

Método de modificación cuando se ejecuta en modo php-fpm

Cuando se ejecuta en modo php-fpm, se ejecuta como un proceso separado. Entonces, primero buscamos su cuenta corriente y luego realizamos las operaciones de autorización como arriba.

            ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
        

Verifique que los cambios surtan efecto

Después de las operaciones anteriores, hemos modificado la autorización, pero aún no ha entrado en vigor. Necesitamos reiniciar el servicio para que nuestra modificación surta efecto. Según nuestra situación real, reinicie el servicio apache o php-fpm. Luego ejecute el comando exec para ver el resultado devuelto. Si el resultado devuelto se obtiene normalmente, es exitoso.

            exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);