Oplossing vir PHP sonder toestemming om uitvoeringsopdrag op Linux uit te voer
Verwante amptelike verwysings
PHP exec Linux sudoers file Sudo CommandsWysigings 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);