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);