Løsning til PHP, der ikke har tilladelse til at udføre exec-kommando på Linux
Relaterede officielle referencer
PHP exec Linux sudoers file Sudo CommandsÆndringer, når du kører i fastcgi-tilstand
Når PHP kører i fastcgi-tilstand, arves dets tilladelser fra dets værtsprogram. Vi tager apache som et eksempel for at forklare. Først og fremmest skal vi finde den konto, hvor apache kører, og derefter bruge vi eller vim til at redigere filen / etc / sudoers og tilføje følgende referenceeksempel til filen. I det følgende indhold skal du først bruge kommandoen ps til at finde apache-processen httpd, se på kontooplysningerne til venstre for det returnerede resultat, og rediger derefter sudoers-filen for at tilføje autorisation til apache-kontoen.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Ændringsmetode, når du kører i php-fpm-tilstand
Når det kører i php-fpm-tilstand, kører det som en separat proces. Så vi finder først dens kørende konto og udfører derefter autorisationshandlinger som ovenfor.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Kontroller, at ændringerne træder i kraft
Efter ovenstående operationer har vi ændret autorisationen, men den er endnu ikke trådt i kraft. Vi er nødt til at genstarte tjenesten for at få vores ændring til at træde i kraft. I henhold til vores aktuelle situation skal du genstarte apache- eller php-fpm-tjenesten. Udfør derefter kommandoen exec for at se det returnerede resultat. Hvis det returnerede resultat opnås normalt, er det vellykket.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);