apach2 und perl

Post Reply
Message
Author
mrvim

apach2 und perl

#1 Post by mrvim »

hi formum,

ich habe suse 9.0. mit yast habe ich apache2 installiert und aus dem erweitert-menu den perl-mod für apache2.
der apache läuft in das cgi-bin verzeichnis habe ich die datei test.pl gelegt und ein chmod 755 gemacht. inhalt der datei:

#!/usr/bin/perl
print "<HTML>Hallo!!</HTML>" ;

gebe ich nun im server 127.0.0.1/cgi-bin/test.pl ein kommt folgende meldung:

Server error!

The server encountered an internal error and was unable to complete your request.

Error message:
Premature end of script headers: test.pl

hat jemand eine idee?

Descartes

Re: apach2 und perl

#2 Post by Descartes »

Was soll denn das sein?
Wo steht denn bei dir der Content-type damit der Webbrowser weiss, was für Daten da jetzt kommen?
Und das was du an den Webbrowser schickst ist auch kein mir bekanntest HTML. Da fehlen mindestens noch die <BODY></BODY> Tags.
Kein Wunder also, dass das bei Dir so nicht klappt.

Minimal muss das so ausschauen:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/usr/bin/perl

use strict;

print "Content-type:text/html\<!--no-->n\<!--no-->n";

print "<html><head><title>Test Page</title></head>\<!--no-->n";
print "<body>\<!--no-->n";
print "<h2>Hello, world!</h2>\<!--no-->n";
print "</body></html>\<!--no-->n";
</font><hr></pre></blockquote>

Für weiteres siehe:

CGI Programming 101
<a href="http://www.cgi101.com/class/" target="_blank"><!--auto-->http://www.cgi101.com/class/</a><!--auto-->

Descartes

Re: apach2 und perl

#3 Post by Descartes »

Für komplexere Scripte kannst du dann das Perl Modul CGI verwenden.

Perl Modul "CGI"
<a href="http://theoryx5.uwinnipeg.ca/CPAN/data/perl/CGI.html" target="_blank"><!--auto-->http://theoryx5.uwinnipeg.ca/CPAN/data/ ... <!--auto-->

Perl Modul "CGI::Carp"
<a href="http://theoryx5.uwinnipeg.ca/CPAN/data/ ... /Carp.html" target="_blank"><!--auto-->http://theoryx5.uwinnipeg.ca/CPAN/data/ ... <!--auto-->

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/usr/bin/perl
use strict;
use CGI; # load CGI routines
use CGI::Carp 'fatalsToBrowser';

my $q = new CGI; # create new CGI object
print $q->header, # create the HTTP header
$q->start_html('Test Page'), # start the HTML
$q->h2('Hello, world!'), # level 2 header
$q->end_html; # end the HTML
</font><hr></pre></blockquote>

mrvim

Re: apach2 und perl

#4 Post by mrvim »

super,

herzlichen dank funzt. noch eine frage:
wozu das cgi-bin verzeichnis? das script läuft doch überall, oder?

gruss mrvim

Descartes

Re: apach2 und perl

#5 Post by Descartes »

> herzlichen dank funzt. noch eine frage:
> wozu das cgi-bin verzeichnis? das script läuft doch überall, oder?
Nein, der Webserver lässt es aus sicherheitsgründen nicht zu, dass von jedem Verzeichnis aus Programme gestartet werden können. Statt dessen wird in der Webserver Konfigurationsdatei ein Verzeichnis (i.d.R. /cgi-bin ) definiert, in dem der Webserver Programme ausführen darf.

Apache Tutorial: Dynamic Content with CGI
<a href="http://httpd.apache.org/docs-2.0/de/howto/cgi.html" target="_blank"><!--auto-->http://httpd.apache.org/docs-2.0/de/how ... <!--auto-->

Konfigurationsanweisungen in httpd.conf
<a href="http://www.europe.redhat.com/documentat ... -DIRECTORY" target="_blank"><!--auto-->http://www.europe.redhat.com/documentat ... <!--auto-->
<a href="http://www.europe.redhat.com/documentat ... -DIRECTORY" target="_blank"><!--auto-->http://www.europe.redhat.com/documentat ... <!--auto-->

Post Reply