Hi,
Ich habe ein ziemlich nerviges Problem: Seit gestern funktionieren meine Scripts nicht mehr. Ich ging auf meine Seite und bekam einfach einen "Internal Server Error". (Ich hatte in der Zwischenzeit nichts verändert, aber vielleicht hat gestern mein Server-Provider eine neue Apache-Version o.ä. aufgespielt.)
Anscheinend tritt das Problem aber nur bei Scripts auf, die die open-Funktion verwenden, da der Fehler nicht mehr kommt, wenn ich die open-Befehle entferne. Als Test habe ich ein ganz simples Programm geschrieben, das einfach eine Datei öffnen und ausgeben soll.
Hier das Script:
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
#Header ausgeben
print "Content-type: text/html\n\n";
#Datei öffnen
my $url = "test.dat";
open(data, "<$url") || die "Datei '",$url,"' nicht gefunden";
my @log = <data>;
close(data);
chomp(@log);
#HTML-Ausgabe
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>\n";
print "<H1>Inhalt von '",$url,"':</H1>\n";
print "<TT>\n";
foreach(@log) {
print $_,"<BR>\n";
}
print "</TT>\n";
print "</BODY></HTML>\n";
1;
Wie gesagt, die üblichen Fehler (keine Rechte, falsches Dateiformat, etc.) scheiden aus, da das Script läuft, wenn den open-Befehl entferne. Auch die Datei "test.dat" existiert im selben Verzeichnis wie das Test-Script.
Vielleicht gibt es ja jemand, der mal ein ähnliches Problem hatte oder eine "sauberere" Verwendung des open-Befehls weiß.