Moin
Frage: wie kann ich dem Script beibringen, dass die Ausgabe in php erfolgen soll, d.h. dass nach Erzeugung des Inhaltes soll das ganze auch noch durch PHP auf dem Server laufen?
Du kannst nicht ohne weiteres dem Server beibringen dass er die Ausgabe eines Interpreters noch durch einen weiteren Interpreter jagen soll...
print "Content-Type: text/php\n\n" ;
Das geht dann so auch an den Browser. Der Server schaut sich die Header zwar an, aber ..siehe oben. Wenn der Browser zufällig einen PHP-Interpreter hat, könnte etwas ähnliches vielleicht sogar funktionieren. Aber irgendwie glaube ich nicht dass es so einen Browser gibt.
$file = 'dateiname.php';
open (INFO, ">$file");
Passiert nix. Auch irgendwie logisch, aber was soll ich da noch eingeben?
Hmm, schreibe alle deine Ausgaben in print INFO "blabla"; um und sende einen Location: dateiname.php-Header (zusammen mit dem richtigen Statuscode) an den Browser. Nicht schön, sollte aber funktionieren.
Die richtige Lösung wäre mit open2 den PHP-Interpreter zu starten, ihm deine Skriptausgaben zu senden und anschließend das Ergebnis auszugeben, du brauchst dazu natürlich eine CGI-Version von PHP (kann ja auch zusätzlich zu einem evt. vorhandenen Modul installiert werden). Etwa so:
#!/usr/bin/perl
use IPC::Open2;
$pid = open2(*Reader, *Writer, "/wo/auch/immer/das/liegt/php");
$oldstdout = select(Writer);
print "<?php phpinfo();?>";
usw. usf.
select($oldstdout);
close(Writer);
Kein print Content-Type, PHP sollte das für dich erledigen
while(<Reader>) { print $_; }
(Naja, so oder so ähnlich, ich kann eigentlich kein Perl)
--
Henryk Plötz
Grüße aus Berlin