Sprendimas, kai PHP neturi leidimo vykdyti „exec“ komandos „Linux“

Susijusios oficialios nuorodos

PHP exec Linux sudoers file Sudo Commands

Modifikacijos, kai veikia greito režimo režimas

Kai PHP veikia „fastcgi“ režimu, jo leidimai paveldimi iš pagrindinės programos. Paimkime apache kaip paaiškinimo pavyzdį. Pirmiausia turime rasti paskyrą, kurioje veikia „apache“, tada naudodami „vi“ arba „vim“ redaguokite failą / etc / sudoers ir pridėkite šį nuorodos pavyzdį prie failo. Šiame turinyje pirmiausia naudokite komandą ps, kad rastumėte apache procesą httpd, peržiūrėkite abonemento informaciją kairėje grąžinto rezultato pusėje ir redaguokite sudoers failą, kad pridėtumėte prieigos prie apache paskyros.

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

Modifikacijos, kai veikia php-fpm režimu

Kai veikia php-fpm režimu, jis veikia kaip atskiras procesas. Taigi pirmiausia surandame jos einamąją paskyrą ir tada atliekame autorizacijos veiksmus, kaip nurodyta aukščiau.

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

Patikrinkite, ar pakeitimai įsigalioja

Po pirmiau nurodytų operacijų pakeitėme prieigos teisę, tačiau ji dar neįsigaliojo. Kad pakeitimai įsigaliotų, turime iš naujo paleisti paslaugą. Atsižvelgdami į esamą situaciją, iš naujo paleiskite „apache“ arba „php-fpm“ paslaugą. Tada atlikite komandą exec, kad peržiūrėtumėte grąžintą rezultatą. Jei grąžintas rezultatas gaunamas paprastai, jis yra sėkmingas.

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