PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bin zu dumm für Apache Konfiguration (Perl)


Dr.Doom
2004-02-12, 17:48:40
Habe gerade installiert:
apache_1.3.29-win32-x86-no_src.exe und ActivePerl-5.8.2.808-MSWin32-x86.msi .

C:\Prgramme\Apache\htdocs\ ist DocumentRoot.
Darin ist ein Verzeichnis cgi-bin.
In DocumentRoot und cgi-bin ist ein Perl-Skript bsp.cgi

bsp.cgi:
#!c:\perl\bin
print "Content-type: text/html\n\n";
foreach (keys %ENV) {
print "<em>$_</em> = $ENV{$_}<br>\n";
}

Apache ist gestartet (als Dienst).
Rufe ich http://localhost/cgi-bin/bsp.cgi im Browser auf, wird keine Seite gefunden (404).
Rufe ich http://localhost/bsp.cgi im Browser auf, dann wird zwar das Skript gefunden, aber es wird nicht übersetzt und ich bekomme nur den Quellcode zu lesen.


Was muss ich in den Config-Dateien vom Apache ändern?
Wah, ich habe keine Ahnung... :-(

Birdman
2004-02-12, 18:48:04
Das muss in die config rein, entweder global oder beim entsprechenden VirtualHost:
AddHandler cgi-script .cgi
Danach brauchts evtl. noch ein:
Options +ExecCGI
Damit er CGI Scripts auch ausführen darf. Und ja, 755 Permissions ned vergessen auf dem File selbst ;)

Wenn du ein:
ScriptAlias /cgi-bin/ "/home/mydir/cgi-bin/"
reinmachts, so werden alle Files in diesem Verzeichnis durch der Perl Parser gejagt, unabhängig von der Dateiendung, d.h. du bräuchtest die oben angegebene AddHandler Direktive nicht mehr.

Black-Scorpion
2004-02-12, 19:08:09
Warum nimmst du nicht das hier.
http://www.apachefriends.org/wampp.html
Spart ne Menge arbeit.

Dr.Doom
2004-02-12, 19:12:16
Ich habe die AddHandler- und Optins-Zeile in die Global-Sektion eingetragen (httpd.conf) eingetragen. Apache neugestartet aber nun bekomme ich keinen Zugriff (403 Forbidden).

Unter Win kann ich doch keine 775 setzen. Was mache ich da stattdessen? ;)

Dr.Doom
2004-02-12, 19:53:02
Original geschrieben von Anonym_001
Warum nimmst du nicht das hier.
http://www.apachefriends.org/wampp.html
Spart ne Menge arbeit.
Hmm, so 100%-ig funktioniert das aber auch nicht (oder?):

beispiel.pl
#!c:\xampp\perl\bin\perl.exe
print "Content-type: text/html\n\n";
print "<h1>test</h1>\n";

Die Ausgabe im Browser sieht dann so aus:
<h1>test</h1>

Sollte der h1-Tag nicht auf 'Test' angewand sein, also eine Überschrift zu sehen sein?

Birdman
2004-02-12, 19:54:24
Das Options +ExecCGI bezieht sich immer auf ein Verzeichnis, bzw. Verzeichnisbaum.
Wenn du den also in der global conf drin hast, musst du schauen dass er in einem <Directory> Context steht welches nachher auch dein Verzeichnis beinhaltet wo dein Script läuft.

Am besten machst du sowieso ein spearates für diesen Zweck, so bist du sicher dass das ganze am richtige Ort steht. z.B.


<Directory "/home/mydir/cgi-bin/">
Options +ExecCGI
</Directory>

Black-Scorpion
2004-02-12, 20:29:21
Original geschrieben von Dr.Doom
Hmm, so 100%-ig funktioniert das aber auch nicht (oder?):

beispiel.pl
#!c:\xampp\perl\bin\perl.exe
print "Content-type: text/html\n\n";
print "&lt;h1&gt;test&lt;/h1&gt;\n";

Die Ausgabe im Browser sieht dann so aus:
<h1>test</h1>

Sollte der h1-Tag nicht auf 'Test' angewand sein, also eine Überschrift zu sehen sein?
Ich habe vor einiger Zeit ein Packet nur zum testen einer Seite mit phpCMS und Scripten installiert.
Da lief PHP von Anfang an.
Wie das mit Perl war, kann ich nicht sagen da ich es nicht benutzt habe.

Aqualon
2004-02-13, 13:06:05
Original geschrieben von Dr.Doom
[...]
print "&lt;h1&gt;test&lt;/h1&gt;\n";

Die Ausgabe im Browser sieht dann so aus:
<h1>test</h1>
Wenn du das h1 als Tag ausgeben möchtest, darfst du die <> nicht in HTML-Code umgeschrieben ausgeben.

Mit print "<h1>test</h1>\n"; sollte es gehen.

Aqua