Schrift
[thread]458[/thread]

Ausgabe des Perl-Scripts ist eine PHP-Datei: PHP-Code wird aber nicht geparst



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
juergen
 2005-03-09 16:04
#4605 #4605
User since
2005-01-18
11 Artikel
BenutzerIn
[default_avatar]
Hallo,

mein Programm liest den Dateiinhalt in eine Variable, verändert den Inhalt bei Bedarf, und gibt den Inhalt an den Browser zurück. Bei Dateien mit reinem HTML-Inhalt ist das kein Problem.

Code: (dl )
1
2
3
4
5
6
7
8
open (FILE, "pfad/dateiname");
{local $/; $inhalt = <FILE>; }
close (FILE);

$inhalt = &mach_was_mit_inhalt($inhalt);

print "content-type: text/html\n\n";
print $inhalt;


Es kann aber auch vorkommen, dass es sich um eine PHP-Datei handelt. Leider wird mit dem obigen Code bei der Ausgabe zum Browser der PHP-Code nicht geparst, sondern 1:1 als HTML zum Browser geschickt. Wie kann ich meinem Server sagen, dass er den Inhalt wie ein PHP-Dokument behandeln soll?

Gibt es dafür vielleicht einen anderen Content-Type?

Mein momentaner Workaround ist, den Inhalt wieder auf die Festplatte zu schreiben, und ein
Code: (dl )
 print "Location: ..." 
zu machen. Wär schön, wenn das auch irgendwie anders ginge.

Betriebssystem: WinXP
Server: Apache 1.3

Danke für eure Hilfe.
Jürgen
GwenDragon
 2005-03-09 16:34
#4606 #4606
User since
2005-01-17
14612 Artikel
Admin1
[Homepage]
user image
Ein Perl-Skript ist und bleibt ein Perl-Skript für den Server. Egal ob es Chinesich, Text oder PDF ausgibt.

Da hilft nur die Ausgabe in eine PHP-Datei zu speichern und mit einem Redirect auf diese weiter zu leiten.

Rein theoretisch könntest du, wenn du den Pfad auf die ausführbare PHP weisst, über eine Pipe aus dem Perl-Skript an PHP schreiben.

Also etwa so
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

# Achtung: Der Code ist nur ein ganz knappes Beispiel!

$PHPEXE = 'X:/usr/local/php/4/php.exe';

open F, "| $PHPEXE";
print F <<"PHPCODE";
<?php phpinfo(); ?>
PHPCODE
close F;

1;
\n\n

<!--EDIT|GwenDragon|1110378977-->
juergen
 2005-03-09 16:40
#4607 #4607
User since
2005-01-18
11 Artikel
BenutzerIn
[default_avatar]
An so etwas ähnlich hatte ich gedacht, dass man irgendwie den Output and die PHP.exe übergibt, habe aber nicht gewusst wie.
Ich kann es leider grad nicht probieren, funktioniert das auch unter Windows???
GwenDragon
 2005-03-09 16:42
#4608 #4608
User since
2005-01-17
14612 Artikel
Admin1
[Homepage]
user image
Ja, es ist doch ein Windows-Verzeichnis
Quote
= 'X:/usr/...'
in meinem Beispiel ;)\n\n

<!--EDIT|GwenDragon|1110379406-->
Strat
 2005-03-09 17:36
#4609 #4609
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
bei apache2 soll man sogenannte chains basteln koennen, womit sowas direkt moeglich sein soll... hab's aber noch nie probiert...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
ptk
 2005-03-09 18:27
#4610 #4610
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Kann man nicht auch mit apache1 mehrere Handler hintereinander schalten?
GwenDragon
 2005-03-09 21:15
#4611 #4611
User since
2005-01-17
14612 Artikel
Admin1
[Homepage]
user image
[quote=ptk,09.03.2005, 17:27]Kann man nicht auch mit apache1 mehrere Handler hintereinander schalten?[/quote]
Ich hbe das so verstanden. Das Skript ist immer Perl aber liefert manchmal PHP.
Sicherlich ist es möglich mit Handlern bzw. Wrapper-CGIs zu arbeiten.
juergen
 2005-03-09 21:20
#4612 #4612
User since
2005-01-18
11 Artikel
BenutzerIn
[default_avatar]
@GwenDragon: Funktioniert leider nicht. Die php.exe scheint eine Datei als Parameter zu erwarten, keinen String. Es kommt die Fehlermeldung "No input file specified." Auch von der Konsole klappts nur, wenn ich die exe mit einer Datei aufrufe. Also muss ich mit dieser Lösung wohl doch zwischenspeichern.

@Strat und ptk: Vielleicht versteh ich euch falsch, aber hilft mir das denn weiter? Ich weiß nicht, ob es so klar rüber gekommen ist: Ich rufe per Browser mein Perl-Script auf und dieses gibt dann den Output an den Browser zurück. Ich möchte nur, dass der Output vorher durch den "PHP-Parser geschickt wird".
GwenDragon
 2005-03-09 21:39
#4613 #4613
User since
2005-01-17
14612 Artikel
Admin1
[Homepage]
user image
ptk
 2005-03-09 21:44
#4614 #4614
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Warum stoerst du dich am Zwischenspeichern? Einfach File::Temp verwenden und die temporaere Datei vergessen...
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2005-03-09 16:04.