Ich hatte das gleiche Problem.
Ich stimme DaveRandom zu, du musst jede Ausgabe unterdrücken (stdout und stderr). Aber keine Notwendigkeit, in einem anderen Prozess mit der Endung ' %code% ' zu starten: Die Funktion exec () kann den Rückgabecode nicht mehr überprüfen und gibt OK zurück, selbst wenn ein Fehler aufgetreten ist ...
Und ich bevorzuge es, Ausgaben in einer temporären Datei zu speichern, anstatt "blackhole". Arbeitslösung:
%Vor%Lesen Sie den Dateiinhalt nach und löschen Sie die temporäre Datei:
%Vor%Ich habe noch nie versucht, einen Daemon aus PHP zu starten, aber ich habe versucht, andere Shell-Befehle auszuführen, mit vielen Schwierigkeiten. Hier sind ein paar Dinge, die ich in der Vergangenheit versucht habe:
Für eine Website muss ich einen Daemon-Prozess starten und stoppen können. Was ich gerade mache ist
%Vor%Der Daemon-Prozess wird gestartet, aber Apache / PHP hängt. Doing a %code% enthüllte, dass sich %code% selbst in einen Zombie-Prozess verwandelte, wodurch alle weiteren Fortschritte effektiv zunichte gemacht wurden. Ist das normal, wenn man versucht, einen Daemon aus PHP zu starten?
Und ja, Apache hat das Recht, den Befehl %code% auszuführen. Ich habe die Datei / etc / sudoers geändert, um dies zu ermöglichen. Nein, ich habe nicht zugelassen, dass Apache in der Lage ist, irgendeine Art von Befehl auszuführen, nur ein paar wenige, damit die Website funktionieren kann.
Wie auch immer, zurück zu meiner Frage, gibt es eine Möglichkeit, PHP zu erlauben, Daemons so zu starten, dass kein Zombie-Prozess erstellt wird? Ich frage das, denn wenn ich das Gegenteil mache, funktioniert das Stoppen eines bereits gestarteten Daemon gut.
Versuchen Sie, %code% an den Befehl anzuhängen.
Also das:
%Vor%Nur für den Fall, dass Sie wissen wollen, was es tut / warum: