Lösning för PHP som inte har behörighet att utföra exec-kommando på Linux

Relaterade officiella referenser

PHP exec Linux sudoers file Sudo Commands

Ändringar när du kör i fastcgi-läge

När PHP körs i fastcgi-läge ärvs behörigheterna från värdprogrammet. Vi tar apache som ett exempel för att förklara. Först måste vi hitta det konto under vilket apache körs och sedan använda vi eller vim för att redigera filen / etc / sudoers och lägga till följande referensexempel i filen. I följande innehåll använder du först ps-kommandot för att hitta apache-processen httpd, titta på kontoinformationen till vänster om det returnerade resultatet och redigera sedan sudoers-filen för att lägga till auktorisering till apache-kontot.

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

Modifieringsmetod när du kör i php-fpm-läge

När du kör i php-fpm-läge körs det som en separat process. Så vi hittar först dess löpande konto och utför sedan auktoriseringsåtgärder enligt ovan.

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

Kontrollera att ändringarna träder i kraft

Efter ovanstående operationer har vi ändrat auktoriseringen, men den har ännu inte trätt i kraft. Vi måste starta om tjänsten för att vår ändring ska träda i kraft. Starta om apache- eller php-fpm-tjänsten enligt vår faktiska situation. Kör sedan kommandot exec för att visa det returnerade resultatet. Om det returnerade resultatet uppnås normalt är det framgångsrikt.

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