WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Apache Server und Perl-Interpreter (http://www.wcm.at/forum/showthread.php?t=27209)

MrBean 04.08.2001 19:52

Apache Server und Perl-Interpreter
 
Hallo!

Möchte zu Beginn als "Neuer" alle recht herzlich begrüßen!

Nun zu meinem Problem: Habe mir "PHPTriad" (enthält Apache, mySql, PHP und Perl) runtergeladen. Der Webserver Apache, mySql und PHP funktionieren super.

Nur mit Perl habe ich Schwierigkeiten, es zum Laufen zu bringen.

Welche Einstellungen sind in der Konfigurationsdatei "httpd.conf" durchzuführen, damit Perl-Scripts auf dem Apache-Server auch vom integrierten Perl-Interpreter ausgeführt werden.

Welche Änderungen sind an folgenden schon vorhandenen Einstellungen in der Konfigurationsdatei "httpd.conf" vorzunehmen:
------------------------------------------------------------------
#!c:/program files/perl/perl

ScriptAlias /cgi-bin/ "/apache/cgi-bin/"

<Directory "/apache/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

AddHandler cgi-script .cgi
AddHandler cgi-script .pl
------------------------------------------------------------------

Danke schon im voraus

MrBean

Sloter 04.08.2001 23:35

Sollte eigentlich alles stimmen.

Was kommt für eine Fehlermeldung?

Der Pfad zu Perl (c:/program files/perl/perl) ist vielleicht nicht gut. Das Leerzeichen zwischen "programm" und "files" kann Probleme machen.

Sloter

Philipp 05.08.2001 12:40

Zitat:

Nun zu meinem Problem: Habe mir "PHPTriad" (enthält Apache, mySql, PHP und Perl) runtergeladen. Der Webserver Apache, mySql und PHP funktionieren super.

Nur mit Perl habe ich Schwierigkeiten, es zum Laufen zu bringen.
Schon einmal probiert am Anfang jedes Perl Scripts das #!/usr/bin/perl durch #!perl zu ersetzten. Das funktioniert normalerweise bei NuSphere.

Zitat:

Welche Einstellungen sind in der Konfigurationsdatei "httpd.conf" durchzuführen, damit Perl-Scripts auf dem Apache-Server auch vom integrierten Perl-Interpreter ausgeführt werden.
Um Scripts unter mod_perl auszuführen muss z.b. folgendes in der httpd.conf stehen:
Code:

# BEGIN MOD_PERL CONFIG
LoadModule perl_module modules/ApacheModulePerl
ScriptAlias /perl-bin/ "perl-bin/"
PerlSendHeader On
<Location /perl-bin>
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
</Location>
# END MOD_PERL CONFIG

Das aktiviert mod_perl im Verzeichnis perl-bin. Dazu wird aber auch das Modul mod_perl benötigt (bei Nusphere ist es Standard).

Mit diesen Script kann man austesten ob mod_perl läuft:
Code:

#!perl -w
use strict;

print "Content-type: text/html\n\n";

print "Mod_perl test script

\n";

if ($ENV{'MOD_PERL'}) {
    print "Mod_perl is installed on this server: $ENV{'MOD_PERL'}

\n";
} else {
    print "Mod_perl is not installed on this server

\n";
}


print "Environment variables
\n";
foreach my $key (sort keys %ENV)
{
        print "\"$key\" = \"$ENV{$key}\"
\n";
}

Ich würde aber Perl als CGI ausführen da nur wenige Perl Scripte die "use strict;" verwenden auch unter mod_perl laufen. Ebenfalls bringt mod_perl nur wirklich etwas bei hoher Traffic bzw. wenn man selber ein Perl Script schreiben will das auch unter mod_perl läuft.

MrBean 05.08.2001 13:31

Ich habe vergessen, daß ich den Apache-Server auf meinem PC (Windows 95) zu Testzwecken als "localhost" betreibe.

In der Apache-Konfigurationsdatei "httpd.conf" habe ich den (vorgegebenen) Pfad zum Perl-Interpreter geändert auf:
#!c:/apache/Perl/nsperl

Wenn ich unter der MS-DOS-Eingabeaufforderung in das Verzeichnis "c:/apache/Perl" gehe und dort "nsperl c:/apache/cgi-bin/comments.pl" aufrufe, wird das entsprechende Perl-Skript ausgeführt.

Rufe ich dieses Perl-Skript (c:/apache/cgi-bin/comments.pl) über meine HTML-Datei "feedback.html" (c:/apache/htdocs/feedback.html) auf, indem ich nach Starten des Apache-Servers in meinem Browser "http://localhost/feedback.html" eingebe, erscheint folgende Fehlermeldung:

500 Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, you@your.address and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
--------------------------------------------------------------------
Apache/1.3.14 Server at localhost Port 80


In der Apache-Datei "error.log" erhalte ich dazu folgenden Eintrag:

[Sun Aug 05 12:04:03 2001] [error] [client 127.0.0.1] couldn't spawn child process: /apache/cgi-bin/comments.pl


Die beiden Dateien "feedback.html" und "comments.pl" stammen aus dem Buch "SELFHTML: Version 7.0 vom 27.04.1998, Autor: Stefan Münz", und zwar aus dem Verzeichnis "CGI/Perl -> CGI und HTML -> Beispiel für die Wechselwirkung zwischen HTML und CGI".

MrBean

Sloter 05.08.2001 17:03

Ändere einmal den Eintrag ScriptAlias
ScriptAlias /cgi-bin/ "/apache/cgi-bin/"
Auf
ScriptAlias /cgi-bin/ "/apache/"

Sloter

MrBean 05.08.2001 18:35

Perl funktioniert!
 
Nachdem ich mir eure guten Vorschläge durchgelesen habe und mehrere Änderungen an der Konfigurationsdatei und den Skripts durchgeführt habe, bin ich auf die Lösung meines Problems gekommen.

Philipp hat geschrieben "Schon einmal probiert am Anfang jedes Perl Scripts das #!/usr/bin/perl durch #!perl zu ersetzten. Das funktioniert normalerweise bei NuSphere."

Ich habe immer gedacht, diese erste Zeile in einem Perl-Skript ist nur unter Unix von Bedeutung und z.B. unter Windows bedeutungslos, sprich es kann irgendetwas stehen.
Ist wahrscheinlich darauf zurückzuführen, daß ich vor Apache den Web-Server von Omnicron (OmniHttp) zusammen mit CGI/Perl betrieben habe. Bei OmniHttp gibt man die Lage des Perl-Interpreters direkt über die WWW-Server-Software ein; was zu Beginn eines Perl-Skripts nach dem "#!" steht, ist egal.

Als ich schließlich zu Beginn meines Perl-Skripts die genaue Lage meines Perl-Interpreters mit
"#!c:/apache/Perl/nsperl"
angegeben habe, wurde das Perl-Skript ausgeführt und ich hatte ein "Jawohl"-, "Juhu"- oder ähnliches Gefühl.

Also nochmal vielen Dank an Sloter und Philipp

MrBean

P.S. Hoffe, auch mal helfen zu können.


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag