Rešitev za PHP, ki nima dovoljenja za izvajanje ukaza exec v Linuxu

Povezane uradne reference

PHP exec Linux sudoers file Sudo Commands

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