OS X Apache und Perl

M

mikrobe

Neues Mitglied
Thread Starter
Dabei seit
20.02.2007
Beiträge
10
Reaktionspunkte
0
Hallo an alle,

noch ganz neu und schon Fragen:
Ich beschäftige mich jetzt schon die ganze Zeit damit den bordeigenen Apache soweit zu bringen, dass er mir folgendes Perl-Skript ausgibt.

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";

Die Anfrage wird quittiert mit Internal Server-Error.

Dieses Skript wird anstandslos ausgeführt:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
foreach $key (keys %ENV) {
print "$key --> $ENV{$key}<br>";
}

Hilfreich wäre evtl. Die log-Datei. Wie kommt man an die log-Datei des Apache ran?

Gruß
mikrobe
 
in /var/log/httpd/ solltest du fündig werden...
 
internal server error wird oft durch falsche Rechte erzeugt.
Setze mal das Skript und den Skriptordner auf 755.
 
@oneOEight

Danke jetzt kann ich in Echtzeit das Protokoll in textmate verfolgen.
Das Skript selbst kann nicht ausgeführt werden, da es fehlerhaft ist, hab es aus dem Netz gesaugt, weil ich selbst nicht so fit in Perl bin.
Aber der Server läuft, wie er soll juchuu.

Gruß
mikrobe
 
Hallo,

als nächsten Schritt möchte ich die Möglichkeit schaffen Fehler im Browser ausgeben zu können (internal server error ist etwas zu allgemein, andernfalls ist jedesmal das logfile zu prüfen).

Habe mir dazu eine .htaccess Datei angelegt. Darin steht (nur!?):

ErrorDocument 500 /cgi-bin/internal-error.pl ## Fehlt hier was?

in der Datei internal-error.pl steht:

#!/usr/bin/perl -w
print "Content-type: text/plain\r\n\r\n";
print "Internal Server Error: $ENV{REDIRECT_ERROR_NOTES}\n";

Habe in der httpd.conf die entsprechende Zeile geändert in: "AllowOverride All"## oder fehlt hier was?

Hab leider nicht so die Ahnung, und im Netz schon alles abgegrast.
help!

###
hinzugefügt: weiß grad auch gar net wie ich die .htaccess Datei wieder wegbekomm, also löschen kann

Gruß
mikrobe
 
Zuletzt bearbeitet:
@ macMännchen

Schlaui,

den error 500 hab ich jetzt schon tausendmal provoziert, sonst müsst ich ja nicht posten.
Sorry, dass ich nicht explizit daraufhingewiesen habe!
Ansonsten ein echt heißer tip, auch der mit chmod a+x ... danke!

@others

Vermute, dass es an der Einstellung der httpd.conf liegt.
Wenn ich über /localhost/... aufrufe funktioniert die differenzierte Fehlermeldung
Wenn ich über 127.0.0.1 aufrufe kommt lapidar internal server error, mehr eben nicht.

Leider komme ich nicht weiter

Gruß
mikrobe
 
Zuletzt bearbeitet:
schon mal versucht, einfach für 127.0.0.1 einen VirtualHost anzulegen?
Vielleicht hilft das.
 
Hallo macmännchen,

weiß nicht was Du mit virtual host meinst, jedenfalls kann ich die in Documents abgelegten *.htm Seiten aufrufen, als auch wie bereits gestern beschrieben *.php sowie *.pl Dateien abarbeiten. Sendmail funktioniert ebenso. Der Server läuft soweit bestens.

Bei Provokation eines error 500 Fehlers wird dieser in der log Datei z.B. als premature end of ... ausgegeben.

Ich möchte mir gerne Kenntnisse in der Einrichtung von .htaccess Dateien aneignen. Daher wäre es ein guter Einstieg diese einfach anmutende Aufgabe, nämlich die error 500 Fehlerausgabe über das browserfenster zu regeln, zu bewerkstelligen.

Nun hätte ich gerne eine Antwort auf meine Frage ob die weiter oben beschriebene .htaccess Datei für den Zweck der error 500 Fehlerausgabe vollständig eingerichtet ist. Anders gefragt: Genügt es wenn diese Datei nur diese eine Zeile beinhaltet oder fehlt da noch irgend etwas?

Mit allgemeinen Vermutungen, wie setze dochmal die Rechte auf 755 ist mir hier nicht weitergeholfen, trotzdem danke.

Gruß
mikrobe
 
Nun hätte ich gerne eine Antwort auf meine Frage ob die weiter oben beschriebene .htaccess Datei für den Zweck der error 500 Fehlerausgabe vollständig eingerichtet ist. Anders gefragt: Genügt es wenn diese Datei nur diese eine Zeile beinhaltet oder fehlt da noch irgend etwas?

um den Fehler 500 abzufangen, genügt es, diese eine Zeile

Code:
ErrorDocument 500 /cgi-bin/internal-error.pl

in die .htaccess einzutragen.
 
Hallo,

als nächsten Schritt möchte ich die Möglichkeit schaffen Fehler im Browser ausgeben zu können (internal server error ist etwas zu allgemein, andernfalls ist jedesmal das logfile zu prüfen).

Habe mir dazu eine .htaccess Datei angelegt. Darin steht (nur!?):

...
Das geht sehr einfach auch ohne .htaccess
Füge einfach in Deinem Skript folgende Zeile hinzu:
Code:
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
Ich emfehle außerdem:
Code:
use warnings;
use strict;
Der Anfang eine cgi Skriptes könnte so aussehen:
Code:
#!/usr/bin/perl
# Kommentare
use strict;
use warnings;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
print "Content-type: text/html\n\n";

HTH
 
@MacMännchen, Hallo,

weiß nicht woher Du die Sicherheit nimmst, jedenfalls wird in diesem Kontext an anderer Stelle empfohlen nur absolute Pfadangaben zu verwenden.
Habe versucht was ähnlich banales wie die Fehlerausgabe zu testen, das hat komischerweise funktioniert:

DirectoryIndex index.html default.html start.shtml

Soll heißen, wenn index.html nicht verfügbar soll er default.html laden usw.

Das funktioniert prächtig, wieso nicht mein erster Versuch mit ErrorDocument :mad: .
Was ich vergessen habe zu erwähnen: Es ist nicht die originäre Tiger-Server-Version sondern der mitgelieferte Standard Apache der bei mir Verwendung findet.

etwas entnervt
mikrobe
 
Also wenn ich die chose mit dem error 500 so in eine .htaccess Datei stelle:

ErrorDocument 500 "so'n scheiß

dann krieg ich das auch angezeigt aber nur auf dem Server meines Providers.
Der Mac Apache pfeift mir was in bezug auf ErrorDocument....

Hab keine Lust mehr
mikrobe
 
@MacMännchen, Hallo,

weiß nicht woher Du die Sicherheit nimmst, jedenfalls wird in diesem Kontext an anderer Stelle empfohlen nur absolute Pfadangaben zu verwenden.

Verweise in der .htaccess über ErrorDocument werden mit relativen Pfaden angegeben (relativ zum DocumentRoot) oder vollständigen URLs.
Siehe http://httpd.apache.org/docs/2.0/mod/core.html#errordocument

Wenn du über die .htaccess lediglich Fehlermeldungen abfangen möchtest, wäre der Vorschlag von maceis, die Verwendung des CGI::Carp-Moduls, wahrscheinlich für dich interessanter.
 
Zurück
Oben Unten