Heim > Artikel > Backend-Entwicklung > Was soll ich tun, wenn Exec PHP nicht ausgeführt werden kann?
Lösung für das Problem, dass exec php nicht ausgeführt werden kann: 1. Ändern Sie die erste Zeile der yii-Datei, um den PHP-Interpreter direkt anzugeben. 2. Ändern Sie die exec-Aufrufmethode, um den PHP-Interpreter direkt anzugeben.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP Version 7.1, Dell G3-Computer.
Warum kann PHP Exec nicht ausgeführt werden?
Es gibt eine geplante Aufgabe, auf die ich klicken möchte, um sie auf der OSS-Hintergrundverwaltungsseite zu starten, aber ich habe mehrere Methoden ausprobiert, aber sie hat nicht funktioniert, egal ob System oder Exec (manuelle Ausführung auf der Shell-Befehlszeile). ist kein Problem); ich vermutete zunächst, dass der Nginx-Benutzer des Webservers ein Berechtigungsproblem hatte, und später wurde festgestellt, dass die Umgebungsvariable die ausführbare PHP-Datei nicht finden konnte (da der Nginx-Benutzer ein eingeschränkter Benutzer ist). Standort
exec("/home/app/example/api/app/yii demand/virtual {$id}", $output); print_r($output);
Array()
ausgegeben. Offensichtlich wird der Geschäftscode nicht ausgeführt (die erste Zeile des Geschäftscodes wurde ausgegeben); // http://oss.example.com/index.php?r=demand/demand-ip/msg&id=1929 点击后执行 exec("/home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output); print_r($output);
Es gibt eine Fehlerausgabe, nachdem das obige Skript ausgeführt wurde: Array ( [0] => /usr/bin/env: php: Keine solche Datei oder kein solches Verzeichnis)
;Array()
,显然是没有执行到业务代码(业务代码的第一行就有输出);
exec("/usr/local/bin/php /home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output); print_r($output);
以上脚本执行后有错误输出:Array ( [0] => /usr/bin/env: php: No such file or directory )
;
/usr/bin/env: php
这句话出自 yii 文件的首行 #!/usr/bin/env php
,本意是用于指明执行 yii 文件的 php 脚本解释器在哪里;可是错误输出/usr/bin/env: php: No such file or directory
说明找不到 php 在哪里;
【推荐学习:《PHP视频教程》】
#!/usr/bin/env php
修改为#!/usr/local/bin/php
/usr/bin/ env: php
Dieser Satz stammt aus der ersten Zeile der yii-Datei #!/usr/bin/env php soll jedoch angeben, wo sich der PHP-Skriptinterpreter zum Ausführen von yii-Dateien befindet; , die Fehlerausgabe <code>/usr/bin/env: php: Keine solche Datei oder kein solches Verzeichnis
zeigt an, dass PHP nicht gefunden werden konnte Wo;#!/usr/bin/env php
zu #!/usr /local/bin/php
, also direkt angeben der Speicherort des PHP-Interpreters (Sie können ihn auch ändern, wenn der Code veröffentlicht wird); $cmd = '/usr/local/bin/php /home/app/example/yapp/yii demand/finish 2057'; $pid_file = 'msgrepeat.pid'; $exec_cmd = sprintf("%s > /dev/null 2>&1 & echo $! > %s & cat %s", $cmd, $pid_file, $pid_file); exec($exec_cmd);
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn Exec PHP nicht ausgeführt werden kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!