Solvo por PHP ne havanta permeson ekzekuti exec-komandon en Linukso
Rilataj oficialaj referencoj
PHP exec Linux sudoers file Sudo CommandsModifoj dum kurado en fastcgi-reĝimo
Kiam PHP funkcias en fastcgi-reĝimo, ĝiaj permesoj estas hereditaj de ĝia gastiga programo. Ni prenas apache kiel ekzemplon por klarigi. Unue ni devas trovi la konton, sub kiu funkcias apache, tiam uzi vi aŭ vim por redakti la dosieron / etc / sudoers, kaj aldoni la sekvan referencan ekzemplon al la dosiero. En la sekva enhavo, unue uzu la komandon ps por trovi la apache-procezon httpd, rigardu la informojn pri la konto maldekstre de la resendita rezulto, kaj poste redaktu la sudoers-dosieron por aldoni rajtigon al la apache-konto.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Modifoj dum kurado en reĝimo php-fpm
Funkciante en reĝimo php-fpm, ĝi funkcias kiel aparta procezo. Do ni unue trovas ĝian kurantan konton, kaj poste plenumas rajtigajn operaciojn kiel supre.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Kontrolu, ke la ŝanĝoj efikas
Post la supraj operacioj, ni modifis la rajtigon, sed ĝi ankoraŭ ne ekvalidis. Ni devas rekomenci la servon por efektivigi nian modifon. Laŭ nia reala situacio, rekomencu la apache aŭ php-fpm-servon. Poste ekzekutu la ordonon exec por vidi la redonitan rezulton. Se la donita rezulto akiriĝas normale, ĝi sukcesas.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);