Problem Perl auf dem Apache zum laufen zu bringen
Zero
- perl
Hallo ich habe mir auf dieser Seite die Verweise zu Perl und dessen Installation durchgelesen, aber bekomme es einfach nicht zum laufen.
In meinem Browser wird nur folgender html code angezeigt:
#!/perl/bin/perl
print "Content-type: text/html\n\n";
print "<h1>Hurra, es klappt!</h1>";
Ich habe ActivePerl in das Verziechnis C:/Perl installiert. Demnach müsste in die Shebang-Zeile #!/perl/bin/perl ,weil die exe ja in diesem Verzeichnis "bin" liegt.
Meine Apache Configuration sieht wie folgt aus:
ServerRoot "C:/Apache"
PidFile logs/httpd.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
ThreadsPerChild 250
MaxRequestsPerChild 0
Listen 80
Include "C:/Apache/conf/module.conf"
ServerAdmin zero8@lycos.de
ServerName zero.mshome.net:80
DefaultType text/plain
ErrorLog logs/error.log
LogLevel warn
LogFormat "%h %l %u %t "r" %>s %b" common
ServerTokens Full
ServerSignature On
DocumentRoot "C:/Apache/htdocs"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "C:/Apache/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AddOutputFilter INCLUDES .shtml .shtm
</Directory>
DirectoryIndex index.htm index.html index.shtml index.shtm index.cgi index.php
ScriptAlias /cgi-bin/ "C:/Aapche/htdocs/cgi-bin"
<Directory "C:/Apache/htdocs/cgi-bin">
AllowOverride None
Options Indexes FollowSymLinks ExecCGI
Order allow,deny
Allow from all
</Directory>
ScriptAlias /php/ "C:/php/"
AddType application/x-httpd-php .php .php4 .phtml
Action Application/x-httpd-php "/php/php-cgi.exe"
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 192.168
</Location>
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 192.168
</Location>
Include "C:/Apache/conf/mime.conf"
Include "C:/Apache/conf/autoindex.conf"
LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/PHP"
AddHandler cgi-script .cgi .pl
Ich habe die cgi-bin in htdocs verschoben, da ich dachte, dass es vielleicht daran liegt, dass ich dieses Dokument über den Browser aufrufe.
Eigentlich war das cgi-bin Verzeichnis unter C:\Apache\cgi-bin.
Ich hoffe ihr könnt mir helfen.
Mit freundlichen Grüßen
Zero
Moin,
zwei Dinge sind wichtig, 1. der virtual Host, 2. die shebang.
Bsp. zu 1., cgi-schnittstelle mit ScriptAlias
<VirtualHost 127.0.0.1>
ServerName stick
DocumentRoot f:/var/www/vhosts/rolfrost.de/httpdocs
ScriptAlias /cgi-bin/ f:/var/www/vhosts/rolfrost.de/cgi-bin/
</VirtualHost>
<VirtualHost 127.0.0.1>
ServerName kaitsch
DocumentRoot f:/var/www/vhosts/rolfrost.de/subdomains/kaitsch/httpdocs
ScriptAlias /cgi-bin/ f:/var/www/vhosts/rolfrost.de/subdomains/kaitsch/cgi-bin/
</VirtualHost>
Trailing Slashes bei ScriptAlias!
zu2. Wenn der Perl-interpreter auf dem gleichen LW liegt wie der Apache, sollte eine shebang like
#!/perl/bin/perl
funktionieren. Ansonsten lege eine Kopie von "perl.exe" auf das Apache-LW in ein Verzeichnis /usr/bin
die shebang
#!/usr/bin/perl
ist somit in allen Scripts kompatibel zu LINUx und Co.
Hotte
Das mit dem Virtual Host verstehe ich nicht ganz.
Mein Apache läuft ja, allerdings will er mir die in der
cgi-bin befindliche Datei nicht anzeigen.
In welche Zeile muss ich den command denn einfügen?
MfG
Zero
Das mit dem Virtual Host verstehe ich nicht ganz.
Mein Apache läuft ja, allerdings will er mir die in der
cgi-bin befindliche Datei nicht anzeigen.
Soll er ja auch nicht, er soll sie ausführen. Dazu reicht es im Prinzip wenn du auf dieses Verzeichnis einen SkriptAlias in der Apache Konfiguration setzt.
Oder in der .htaccess Datei einen Handler für das cgi Skript.
ausserdem kannst du unter windows die Direktive
ScriptInterpreterSource registry
einschalten, dann brauchst du keine Windows Shebang zu verwenden, sondern kannst dort einen Wert eintragen, der üblicher ist, z.b. #!/perl/bin/perl
Struppi.
Mein Apache läuft ja, allerdings will er mir die in der
cgi-bin befindliche Datei nicht anzeigen.
sry das war falsch von mir ausgedrückt.
Wollte sagen, dass mein Browser die Datei nicht richtig anzeigt/wiedergibt.
Dazu reicht es im Prinzip wenn du auf dieses Verzeichnis einen SkriptAlias in der Apache Konfiguration setzt.
Das habe ich meines Wissens nach schon
ScriptAlias /cgi-bin/ "C:/Aapche/htdocs/cgi-bin/"
<Directory "C:/Apache/htdocs/cgi-bin">
AllowOverride None
Options Indexes FollowSymLinks ExecCGI
Order allow,deny
Allow from all
</Directory>
Wenn an dieser config was falsch sein sollte bitte korrigieren oder mir bitte sagen was ich wo zu verändern habe und wieso es bisher falsch war. Oder falls ihr in der allgemeinen config Fehler finden solltet.
In meinem Apache-Ordner befindet sich keine Datei .htacess
Tut mir leid das ich da noch nich so ganz hinter steige, aber bin relativ neu euf dem Gebiet und für jede Hilfe sehr dankbar.
MfG
Zero
hi,
Tut mir leid das ich da noch nich so ganz hinter steige, aber bin relativ neu euf dem Gebiet und für jede Hilfe sehr dankbar.
ScriptAlis oder Handler und eine exakte shebang bringen den Apache dazu, Scripts auszuführen, wie auch Struppi schrieb.
Klick nochmal weiter oben auf meinen Post mit den Beispielen zum virtual Host, das musst Du nur noch verzeichnismäßig anpassen.
Hotti
Danke @ all,
nun klappt es. Allerdings kann folgendes kurzes Script nicht wiedergegeben werden:
#!/Perl/bin/perl.exe
print "Hallo Welt\n";
In dem error-log steht folgendes dazu:
[Tue Jan 13 11:55:09 2009] [error] [client 127.0.0.1] malformed header from script. Bad header=Hallo Welt: hallowelt.pl
Wäre nett wenn ihr mir erklärt, was an diesem Script falsch ist.
Zero
Allerdings kann folgendes kurzes Script nicht wiedergegeben werden:
#!/Perl/bin/perl.exe
print "Hallo Welt\n";In dem error-log steht folgendes dazu:
[Tue Jan 13 11:55:09 2009] [error] [client 127.0.0.1] malformed header from script. Bad header=Hallo Welt: hallowelt.pl
Wäre nett wenn ihr mir erklärt, was an diesem Script falsch ist.
Apache beklagt sich, dass du ihm keinen Header gesendet hast.
Ein header ist die erste Sektion des Outputs, der durch die Zeichenfolge "\n\n" abgeschlossen wird. Typischer Inhalt des Headers ist eine Content-type Angabe.
mfg Beat
[Tue Jan 13 11:55:09 2009] [error] [client 127.0.0.1] malformed header from script. Bad header=Hallo Welt: hallowelt.pl
Wäre nett wenn ihr mir erklärt, was an diesem Script falsch ist.
wieso hast du den Header aus deinem Orginalskript rausgeschmissen?
Struppi.