Der Inhalt dieses Artikels befasst sich mit der Lösung des Problems, dass die Funktion exec() in PHP keine Systembefehle ausführt Ich hoffe, es wird helfen. Du hast geholfen.
0. Beschreibung
In PHP können wir exec() verwenden, um Systembefehle auszuführen, aber manchmal kommt es zu einer erfolglosen Ausführung des exec()-Befehls Es gibt keine Rückgabe, bitte erklären Sie unten:
1. Funktion
exec ( string $command [, array &$output [, int &$return_var ]] ) : string 参数说明: 1.$command 要执行的命令 2.$output 执行结果 3.$return_var 若同时设置 $output 和此变量,命令执行后的返回状态会被写入到此变量
2. Beispiel
exec("ping www.baidu.com", $output);
Normal Im Allgemeinen , das Ausführungsergebnis ist das gleiche wie bei der direkten Ausführung von Ping auf dem Server, aber aus bestimmten Gründen können unerwartete Situationen auftreten. Die beiden Situationen sowie die Lösungen werden unten erläutert
2.1 Erlaubnis Probleme
Problem
Wenn wir Linux-Systembefehle direkt auf dem Server ausführen (hier am Beispiel von Ping), hängt die Ausführungsberechtigung von den Berechtigungen unseres angemeldeten Benutzers ab. Wenn unser angemeldeter Benutzer Root ist, wird er beim Ausführen von Ping als Root ausgeführt. Wenn wir jedoch auf die Website zugreifen, ist unser Benutzer zu diesem Zeitpunkt www. Wenn wir die Ausführungsberechtigung von Ping nicht ändern, wird die Ausführung nicht erfolgreich sein.
Lösung
Ändern Sie die Ausführungsberechtigung von Ping oder dem entsprechenden Befehl
2.2 Befehlspfadproblem
Problem
Es gibt eine andere Situation, wenn wir exec zum Ausführen eines Befehls verwenden, wird kein Fehler gemeldet und kein Ergebnis zurückgegeben. Der Grund dafür ist, dass sich dieser Befehl nicht in dem Verzeichnis befindet, in dem die Umgebungsvariable konfiguriert ist ist die Datei /etc/profile. Wir können beispielsweise „whereis
ifconfig“ verwenden, um den spezifischen Pfad dieses Befehls herauszufinden. Es gibt zwei Lösungen :
Lösung
1 Kopieren Sie den Befehl nach /usr/bin (nicht empfohlen)
2 Vervollständigen Sie direkt den vollständigen Pfad des Befehls exec('/usr /sbin',$output); (empfohlen)
Das obige ist der detaillierte Inhalt vonLösung für das Problem, dass die Funktion exec() in PHP Systembefehle nicht ausführen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!