Ich habe dies ursprünglich gepostet aufPaketüberflussund mir wurde vorgeschlagen, dies hier zu posten, weil: „Es könnte sein, dass die Konfiguration in CGI sich von der Konfiguration für Ihren Benutzer unterscheidet.“
Nachdem das gesagt ist, hier mein ursprünglicher Beitrag:
Zugegeben, das ist für mich ein seltsames Problem, aber ich mache Folgendes:
Ich habe ein Ruby-Skript, das eine Zeichenfolge aus PHP-Code ausführt und die Ausgabe erfasst.
Dies hängt in gewisser Weise mitein weiteres Problem, das ich hattemit dem Ausführen von CGI-PHP von der Befehlszeile aus.
Hier ist der Quelltext des Ruby-Skripts:
#!/usr/bin/ruby
puts "Content-type: text/html\n\n"
puts "Start PHP Output<br />"
puts `echo '<?php echo "hello world"; ?>' | php5 -q`
puts "End PHP Output<br />"
Das wirklich Merkwürdige, das ich nicht herausfinden kann, ist, dass sich der PHP-Code hier anders zu verhalten scheint, wenn ich das Ruby-Skript von der Befehlszeile aus ausführe, im Vergleich zu CGI. Das ergibt für mich wirklich keinen Sinn, da ich in beiden Fällen dieselbe PHP-Zeichenfolge vom Befehl mit denselben Argumenten ausführe.
Wenn ich das obige Ruby-Skript von der Befehlszeile aus ausführe, erhalte ich die erwartete Ausgabe:
Inhaltstyp: text/html
Start PHP-Ausgabe
Hallo Welt Ende PHP-Ausgabe
Wenn ich dasselbe Ruby-Skript von einem Browser aus über CGI aufrufe, erhalte ich diese Ausgabe:
PHP-Ausgabe starten
X-Powered-By: PHP/5.2.13 Inhaltstyp: text/html
setzt "Inhaltstyp: text/html\n\n" setzt "PHP-Ausgabe starten
"echo 'hello world' | php5 -q
setzt "PHP-Ausgabe beenden
" PHP-Ausgabe beenden
Für mich sieht es so aus, als ob die PHP-Zeichenfolge die Header nicht unterdrückt, wie ich es von der Option -q erwarten würde ... und außerdem mein gesamtes Ruby-Skript an den Browser zurückgibt – was mich verblüfft.
Irgendwelche Gedanken?
Dank im Voraus!
Antwort1
Ich konnte auf StackOverflow eine Lösung finden. Schauen Sie es sich hier an.