Lösung für PHP, das keine Berechtigung zum Ausführen des Befehls exec unter Linux hat
Verwandte offizielle Referenzen
PHP exec Linux sudoers file Sudo CommandsÄnderungen im Fastcgi-Modus
Wenn PHP im Fastcgi-Modus ausgeführt wird, werden seine Berechtigungen von seinem Host-Programm geerbt. Wir nehmen Apache als Beispiel, um es zu erklären. Zuerst müssen wir das Konto finden, unter dem Apache ausgeführt wird, und dann vi oder vim verwenden, um die Datei / etc / sudoers zu bearbeiten, und der Datei das folgende Referenzbeispiel hinzufügen. Verwenden Sie im folgenden Inhalt zuerst den Befehl ps, um den Apache-Prozess httpd zu finden, sehen Sie sich die Kontoinformationen ganz links im zurückgegebenen Ergebnis an und bearbeiten Sie dann die sudoers-Datei, um dem Apache-Konto eine Autorisierung hinzuzufügen.
ps aux | grep httpd
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
apache ALL=(ALL) NOPASSWD:ALL
Änderungen beim Ausführen im PHP-Fpm-Modus
Im php-fpm-Modus wird es als separater Prozess ausgeführt. Wir finden also zuerst das laufende Konto und führen dann die oben beschriebenen Autorisierungsvorgänge durch.
ps aux | grep php-fpm
vim /etc/sudoers
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
www ALL=(ALL) NOPASSWD:ALL
Stellen Sie sicher, dass die Änderungen wirksam werden
Nach dem obigen Vorgang haben wir die Autorisierung geändert, sie ist jedoch noch nicht wirksam. Wir müssen den Dienst neu starten, damit unsere Änderung wirksam wird. Starten Sie den Apache- oder PHP-Fpm-Dienst entsprechend unserer aktuellen Situation neu. Führen Sie dann den Befehl exec aus, um das zurückgegebene Ergebnis anzuzeigen. Wenn das zurückgegebene Ergebnis normal erhalten wird, ist es erfolgreich.
exec('sudo dmidecode -s system-serial-number', $result);
var_dump($result);