Sven Rautenberg: und PHP <- geht das überhaupt?

Beitrag lesen

Aloha!

Betrachte dies als Antwort auf deine drei Postings. :)

Was passthru() angeht: Damit veranlaßt du das Perl-Script, seine Aufgabe zu erledigen und schleust alles, was Perl so schreibt, direkt zum Browser durch.

Wenn das Perl-Skript gewöhnlich direkt als CGI-Skript arbeitet, dann muß es natürlich einen gültigen HTTP-Header ausgeben. Das bedeutet für dich: Wenn du mit Passthru arbeiten willst, mußt du das Perl-Skript entsprechend so ändern, daß es keinen HTTP-Header ausgibt - und auch nichts von den sonst für eine Seite üblichen Bestandteilen, die du mit PHP schon gesendet haben könntest, also <html><head>[...]</head><body>[...]</body></html>. Eigentlich willst du nur das Suchergebnis haben, und sonst nichts.

Das bedeutet, am Perl-Skript ein wenig herumzubasteln. Wenn du das nicht kannst, bleibt dir nur der Weg, den Inhalt der Perl-Ausgabe zwischenzuspeichern und nur das auszugeben, was du wirklich haben willst. Das kann relativ einfach werden, wenn das Perl-Skript eine markante Zeichenfolge ausgibt, die Start und Ende des interessanten Bereichs markiert. Beispielsweise <body> und </body>. Alles dazwischen könntest du dann mit PHP ausgeben.

Was den Aufruf angeht:
Dank der fopen-wrappers kannst du URLs includen. Damit wird dann der Webserver erneut angesprochen und sorgt in einem eigenen Prozeß dafür, daß das Perl-Skript die URL-Parameter erhält.

Wenn du das Skript aber direkt mit passthru() ansprichst, dann mußt du eine andere Methode zur Parameterübermittlung wählen: Kommandozeilenparameter oder Pipes. Je nach deiner Wahl müßtest du deshalb dein Perl-Skript umarbeiten, damit es diese neue Art der Kommunikation versteht.

Dann kannst du mit passthru('../cgi-bin/perlskript.pl -search="Suchbegriff" -flag1 -flag2 -parameter="sonstirgendwas"'); arbeiten.

Du siehst: Entweder sprichst du das Perl-Skript direkt an und mußt ein paar Änderungen am Perl-Skript vornehmen, oder du sprichst das Perl-Skript über die URL an und mußt ein paar Änderungen an der Ergebnisbehandlung vornehmen. Ändern mußt du in jedem Fall, weil das Perl-Skript derzeit eine komplette HTML-Seite ausgibt, in die du aber noch etwas hineinschreiben willst.

- Sven Rautenberg