Megoldás arra, hogy a PHP nem rendelkezik engedéllyel az exec parancs Linux alatt történő végrehajtására

Kapcsolódó hivatalos hivatkozások

PHP exec Linux sudoers file Sudo Commands

Módosítások, ha fastcgi módban fut

Ha a PHP fastcgi módban fut, akkor az engedélyeket öröklik a gazdagéptől. Az apache-t vesszük példának a magyarázatra. Először meg kell találnunk azt a fiókot, amelyen az apache fut, majd a vi vagy a vim használatával szerkesszük az / etc / sudoers fájlt, és hozzá kell adnunk a következő hivatkozási példát a fájlhoz. A következő tartalomban először a ps paranccsal keresse meg az apache folyamatot httpd, nézze meg a visszaküldött eredmény bal szélén lévő fiókadatokat, majd szerkessze a sudoers fájlt, hogy hozzáadja az apache-fiók jogosultságait.

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

Módosítások php-fpm módban történő futtatáskor

Ha php-fpm módban fut, akkor külön folyamatként fut. Tehát először megtaláljuk a futó fiókját, majd a fentieknek megfelelően végezzük az engedélyezési műveleteket.

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

Ellenőrizze, hogy a változtatások életbe lépnek-e

A fenti műveletek után módosítottuk az engedélyezést, de az még nem lépett hatályba. A módosításunk életbe léptetéséhez újra kell indítanunk a szolgáltatást. A tényleges helyzetünknek megfelelően indítsd újra az apache vagy a php-fpm szolgáltatást. Ezután hajtsa végre az exec parancsot a visszaküldött eredmény megtekintéséhez. Ha a visszaküldött eredményt normálisan kapja meg, akkor az sikeres.

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