WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 04.08.2001, 18:52   #1
MrBean
Veteran
 
Registriert seit: 04.08.2001
Alter: 52
Beiträge: 211


Frage 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
MrBean ist offline   Mit Zitat antworten
Alt 04.08.2001, 22:35   #2
Sloter
Inventar
 
Registriert seit: 05.01.2000
Beiträge: 3.812


Lächeln

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
Sloter ist offline   Mit Zitat antworten
Alt 05.08.2001, 11:40   #3
Philipp
verXENt
 
Benutzerbild von Philipp
 
Registriert seit: 01.08.1999
Beiträge: 7.084

Mein Computer

Standard

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.
Philipp ist offline   Mit Zitat antworten
Alt 05.08.2001, 12:31   #4
MrBean
Veteran
 
Registriert seit: 04.08.2001
Alter: 52
Beiträge: 211


Standard

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
MrBean ist offline   Mit Zitat antworten
Alt 05.08.2001, 16:03   #5
Sloter
Inventar
 
Registriert seit: 05.01.2000
Beiträge: 3.812


Lächeln

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

Sloter
Sloter ist offline   Mit Zitat antworten
Alt 05.08.2001, 17:35   #6
MrBean
Veteran
 
Registriert seit: 04.08.2001
Alter: 52
Beiträge: 211


Lächeln 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.
MrBean ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:55 Uhr.


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