PHP exec () Funktion und verschiedene Hosts

Ich habe ein Skript, das eine Datei in ein paar Verzeichnissen ausführt, die so aussieht:

<code>exec("php-cli $file_path > /dev/null 2>/dev/null &"); //php command-line
</code>

Dies funktioniert auf den meisten Hosts, aber einige Hosts mögen es nicht und es wird nicht ausgeführt, ohne dass ein Fehler generiert wird.

Für die Hosts, auf denen dies fehlschlägt, verwende ich

<code>exec("php $file_path > /dev/null 2>/dev/null &"); //notice the -cli is gone
</code>

Welches funktioniert gut.

$ file_path ist der vollständige Pfad zur auszuführenden Datei /home/blah/path/blah.php

Wie kann ich diese Uniform machen, damit sie auf allen Servern funktioniert (zumindest unter Unix)?

**BEARBEITEN**

Nun, ich mache es so, es ist (höchstwahrscheinlich) nicht der richtige Weg, aber es funktioniert.

Anstatt nur php-cli oder php zu verwenden, verwende ich beide. Wenn also einer ausfällt, geht der andere durch. Entweder läuft die PHP als CGI oder CLI und einer von diesen wird fangen, und da es keine Ausgabe gibt, würde es auch keinen Fehler geben.

<code>exec("php-cli $file_path > /dev/null 2>/dev/null &");
exec("php $file_path > /dev/null 2>/dev/null &");
</code>

Wenn Sie keine bessere Lösung kennen, lassen Sie es mich bitte wissen. Danke für deine Hilfe.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage