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