Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das PHP-Exec-Fehlerproblem

So lösen Sie das PHP-Exec-Fehlerproblem

藏色散人
藏色散人Original
2022-01-28 10:43:053219Durchsuche

Lösung für den PHP-Exec-Fehler: 1. Ändern Sie die Ausführungsberechtigung von Ping oder dem entsprechenden Befehl. 2. Vervollständigen Sie den vollständigen Pfad des Befehls mit „exec('/usr/sbin',$output);“; die Umgebungsvariable Zielverzeichnis hinzufügen.

So lösen Sie das PHP-Exec-Fehlerproblem

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Wie löse ich das PHP-Exec-Fehlerproblem?

0. Beschreibung

In PHP können wir exec() verwenden, um Systembefehle auszuführen, aber manchmal kommt es zu einem Fehler bei der Ausführung von exec() gibt es keine Rückkehr, erklären wir es unten: exec()来执行系统命令,但有时我们会遇到exec()命令执行不成功,或者无返回的情况,下面来说明一下:

1.函数

  exec ( string $command [, array &$output [, int &$return_var ]] ) : string
  参数说明:
  1.$command   要执行的命令
  2.$output  执行结果
  3.$return_var 若同时设置 $output 和此变量,命令执行后的返回状态会被写入到此变量

2.例子

  exec("ping www.baidu.com", $output);

正常来说执行结果会跟在服务器上直接执行ping没区别,但是由于某些原因会导致意外情况,下边针对两种情况作出说明,以及解决办法

2.1 权限问题

问题

当我们在服务器上直接执行linux系统命令时(此处以ping为例),执行权限取决于我们登陆用户的权限,如果我们登陆用户为root ,则执行ping的时候是用root来执行。但当我们在网站上访问的时候,我们此时的用户为www,如果不修改ping的执行权限的话,是无法执行成功的。

解决

修改ping或者对应命令的执行权限
2.2 命令路径问题

问题

还有一种情况,当我们用exec执行某个命令时,不报错,也不返回结果,原因是此命令没有在环境变量配置的目录下即/etc/profile文件中,以ifconfig为例,我们可以用whereis ifconfig,找出此命令具体路径,比如路径在/usr/sbin下,两种解决办法:

解决

1 复制命令到/usr/bin下,也就是环境变量下的目录(不太推荐)
2 直接将命令全路径补全exec('/usr/sbin',$output);(推荐)
3 在环境变量中增加目标目录例如增加/usr/sbin
1. Funktion
rrreee

Normalerweise ist das Ausführungsergebnis dasselbe wie die Ausführung von ping direkt auf dem Server, aber unerwartet Situationen können aus bestimmten Gründen auftreten. Nachfolgend finden Sie Beschreibungen der beiden Situationen und Lösungen. Die Ausführungsberechtigung hängt von den Berechtigungen unseres angemeldeten Benutzers ab. Wenn unser angemeldeter Benutzer root ist, wird root zum Ausführen von ping verwendet. Aber wenn wir auf die Website zugreifen, ist unser Benutzer zu diesem Zeitpunkt www. Wenn wir die Ausführungsberechtigung von Ping nicht ändern, wird es nicht erfolgreich ausgeführt. Lösung

🎜Ändern Sie die Ausführungsberechtigungen von Ping oder entsprechenden Befehlen🎜
2.2 Befehlspfadproblem
🎜Problem🎜🎜Es gibt eine andere Situation, wenn wir exec zum Ausführen eines Befehls verwenden, wird kein Fehler gemeldet oder zurückgegeben Der Grund dafür ist, dass sich dieser Befehl nicht in dem Verzeichnis befindet, in dem die Umgebungsvariablen konfiguriert sind, d. h. in der Datei /etc/profile Als Beispiel können wir whereis ifconfig verwenden, um den spezifischen Pfad dieses Befehls herauszufinden. Der Pfad befindet sich beispielsweise unter <code>/usr/sbin, zwei Lösungen: 🎜🎜Lösung 🎜🎜1 Kopieren Sie den Befehl nach /usr/bin code>, also in das Verzeichnis unter der Umgebungsvariablen (nicht empfohlen)
2 Vervollständigen Sie direkt den vollständigen Pfad des Befehls exec('/usr/sbin',$output);(empfohlen) )
3 Fügen Sie das Zielverzeichnis zur Umgebungsvariablen hinzu, fügen Sie beispielsweise /usr/sbin hinzu zum Verzeichnis🎜🎜🎜Empfohlenes Lernen: „🎜PHP Video Tutorial🎜“🎜

Das obige ist der detaillierte Inhalt vonSo lösen Sie das PHP-Exec-Fehlerproblem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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