Sie können das Echo-Ergebnis auf der Konsole nicht sehen, weil es nie zur Konsole gegangen ist. Durch Öffnen des Prozesses im Lesemodus wurde sein STDOUT mit dem Dateihandle des offenen Prozesses verknüpft. Die Ausgabe würde nur dann zur Konsole gelangen, wenn Sie von diesem Datei-Handle lesen und dann wiederholen.
Mit anderen Worten, der Fluss ist das.
Ich hoffe, das erklärt, was hier vor sich geht. Wenn Sie die Ausgabe von a.php auf der Konsole sehen wollen, dann muss b.php es aus dem Stream in $ h lesen und dann zurückgeben, da nur b.php Zugriff auf die Konsole hat.
Wenn Sie stattdessen system () anstelle von popen () verwenden, wird die Ausgabe automatisch auf der Konsole des aufrufenden Skripts ausgegeben, da system () die STDIN und STOUT des Hauptskripts an das aufgerufene Programm oder Skript übergibt .