Rješenje za PHP koji nema dozvolu za izvršavanje exec naredbe na Linuxu
Povezane službene reference
PHP exec Linux sudoers file Sudo CommandsIzmjene prilikom rada u fastcgi načinu
Kada se PHP izvodi u fastcgi načinu, njegova se dopuštenja nasljeđuju od glavnog programa. Za objašnjenje uzimamo apache. Prvo, moramo pronaći račun na kojem je pokrenut apache, a zatim upotrijebiti vi ili vim za uređivanje datoteke / etc / sudoers i datoteci dodati sljedeći referentni primjer. U sljedećem sadržaju prvo upotrijebite ps naredbu da biste pronašli postupak apache httpd, pogledali podatke o računu na lijevoj strani vraćenog rezultata, a zatim uredite datoteku sudoers kako biste dodali autorizaciju na račun apache.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Izmjene prilikom izvođenja u php-fpm načinu
Kada se izvodi u php-fpm načinu, izvodi se kao zaseban postupak. Dakle, prvo pronađemo njegov tekući račun, a zatim izvodimo postupke autorizacije kao gore.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Provjerite stupaju li promjene na snagu
Nakon gore navedenih operacija izmijenili smo autorizaciju, ali ona još nije stupila na snagu. Moramo ponovno pokrenuti uslugu kako bi naša izmjena stupila na snagu. Prema našoj stvarnoj situaciji, ponovo pokrenite uslugu apache ili php-fpm. Zatim izvršite naredbu exec za prikaz vraćenog rezultata. Ako se vraćeni rezultat dobije normalno, uspješan je.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);