Heim >Backend-Entwicklung >PHP-Tutorial >Lösung für das Problem, dass die Funktion exec() in PHP Systembefehle nicht ausführen kann

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

不言
不言nach vorne
2019-02-15 11:41:088308Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen