Oplossing vir PHP sonder toestemming om uitvoeringsopdrag op Linux uit te voer

Verwante amptelike verwysings

PHP exec Linux sudoers file Sudo Commands

Wysigings wanneer u in die fastcgi-modus werk

As PHP in die fastcgi-modus loop, word die regte daarvan van die gasheerprogram geërf. Kom ons neem apache as voorbeeld om dit te verduidelik. Eerstens moet ons die rekening vind waaronder apache loop, dan gebruik vi of vim om die lêer / etc / sudoers te wysig, en voeg die volgende verwysingsvoorbeeld by die lêer. Gebruik in die volgende inhoud eers die ps-opdrag om die apache-proses te vind httpd, kyk na die rekeninginligting aan die linkerkant van die teruggekeerde resultaat, en wysig dan die sudoers-lêer om magtiging by die apache-rekening te voeg.

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

Wysigings wanneer u in php-fpm-modus werk

As u in php-fpm-modus werk, werk dit as 'n aparte proses. Ons vind dus eers sy lopende rekening en voer dan magtigingsbewerkings uit soos hierbo.

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

Verifieer dat die veranderinge in werking tree

Na die bogenoemde bedrywighede het ons die magtiging gewysig, maar dit het nog nie in werking getree nie. Ons moet die diens weer begin om ons wysiging in werking te stel. Herbegin die apache- of php-fpm-diens volgens ons werklike situasie. Voer dan die exec-opdrag uit om die teruggekeerde resultaat te sien. As die teruggekeerde resultaat normaalweg behaal word, is dit suksesvol.

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