Lösung für das Problem, dass die Funktion exec() in PHP Systembefehle nicht ausführen kann

不言
Freigeben: 2023-04-05 08:54:01
nach vorne
8257 Leute haben es durchsucht

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 和此变量,命令执行后的返回状态会被写入到此变量
Nach dem Login kopieren

2. Beispiel

exec("ping www.baidu.com", $output);
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage