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