Rešitev za PHP, ki nima dovoljenja za izvajanje ukaza exec v Linuxu
Povezane uradne reference
PHP exec Linux sudoers file Sudo CommandsSpremembe med izvajanjem v načinu fastcgi
Ko se PHP izvaja v načinu fastcgi, njegova dovoljenja podedujejo gostiteljski program. Za razlago vzamemo apache. Najprej moramo poiskati račun, pod katerim deluje apache, nato z vi ali vim urediti datoteko / etc / sudoers in ji dodati naslednji referenčni primer. V naslednji vsebini najprej z ukazom ps poiščite postopek apache httpd, poglejte podatke o računu na skrajni levi strani vrnjenega rezultata in nato uredite datoteko sudoers, da dodate pooblastilo za račun apache.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Spremembe med izvajanjem v načinu php-fpm
Ko se izvaja v načinu php-fpm, se izvaja kot ločen postopek. Najprej poiščemo njegov tekoči račun in nato izvedemo avtorizacijske postopke, kot je opisano zgoraj.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Preverite, ali spremembe začnejo veljati
Po zgoraj navedenih postopkih smo pooblastilo spremenili, vendar še ni začelo veljati. Za začetek veljavnosti spremembe moramo ponovno zagnati storitev. Glede na naše dejansko stanje znova zaženite storitev apache ali php-fpm. Nato izvedite ukaz exec za ogled vrnjenega rezultata. Če vrnjeni rezultat dobite normalno, je uspešen.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);