valid xhtml 1.0 strict
bookmark this site at del.icio.us bookmark this site at mister-wong.de bookmark this site at furl.net bookmark this site at ho.tli.st bookmark this site at blogmarks.net bookmark this site at stumbleupon.com bookmark this site at scuttle.org
 

zuletzt geändert : 24.01.10

efileman FAQ

Questions : 

Erhalte "CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers." beim Starten des Skripts.

Erhalte "Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator..." nach Änderung der Sprachdatei.

Erhalte "CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers." beim Starten des Skripts.

Erhalte "Software error: Undefined subroutine &Apache::ROOT::cgi_2dbin::efileman::efileman_xx_2ecgi::sifre_kontrol called at /path/efileman_xx.cgi line xx." oder " Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator..." beim Arbeiten mit dem Skript.

Wie kann ich die vollständigen Pfadinformationen im Gehe zu-Element im Manager verstecken ?

Das efileman Logo erscheint nicht. Für alle Dateien im Manager wird nur das "no.gif" oder gar nichts angezeigt.

Warum unterscheidet efileman zwischen Anwender Pfad und Anwender URL, und wie werden diese konfiguriert ?

CHMOD, Permissions, Zugriffsrechte ?

Welche Zugriffsrechte (chmod) sollten für welche efileman-Verzeichnisse und Dateien vergeben werden ?

Wie sind die Namenskonventionen beim mehrmaligen Upload von Dateien gleichen Namens oder beim Upload in ein konfiguriertes generelles Upload-Verzeichnis ?

Mehr über das Upload-Thema, z.B. unvollständig übertragene Dateien und CGItempxxx Dateien.

Erhalte "...Page not found or cannot display..." nach dem Login oder nach dem Ändern der Anwender-Pfadangaben im Admin Bereich.

Warum dauert es so lange, bis meine Dateien angezeigt werden ?

Warum funktioniert der Download-Zähler des efileman 7.1 nicht ?

Wie können zip-Dateien mit dem Modul Archive::Zip erzeugt werden, wenn das Modul auf dem Server nicht installiert ist ? Oder was kann im Fall einer installierten, aber zu alten Version von Archive::Zip getan werden ?



Erhalte Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator... nach Installation des Scripts.

Da gibt es viele Gründe, z.B.:

  • Auf einem UNIX System muss efileman.cgi als ausführbare Datei gekennzeichnet werden, z.B. durch Setzen der Nutzerrechte (permisssions) für efileman.cgi auf 755. Setze alle efileman Verzeichnisse auf den gleichen Wert.
  • Ist die shebang Zeile in efileman.cgi geändert worden ? Das ist die erste Zeile in einem Perl Skript, die dem System mitteilt, wo der Perl Interpreter zu finden ist. In den meisten Fällen lautet dieser Pfad auf einem UNIX System "#!/usr/bin/perl". Für einen MS Windows Server gilt meistens "#!C:/perl/bin". Es dürfen keine Backslashes verwendet werden !
  • Ist das Skript auf einem Windows oder MAC PC geändert worden, z.B. durch Überprüfung oder Änderung der shebang Zeile, und das Skript soll auf einem UNIX System zum Einsatz kommen, könnte der Grund füf die Fehlermeldung ein falsches Steuerzeichen für den Zeilenumbruch sein. Teste einen Text Editor wie proton oder NoteTab Light und stelle sicher, dass die Datei im richtigen Format entsprechend der Systemanforderungen gespeichert wird. Die folgenden Bilder zeigen, wie Notetab Lite und proton zu konfigurieren sind. Bewege die Maus über die Bilder, um sie zu vergrössern, oder klicke auf ein Bild, um es in einem neuen Fenster zu öffnen.

    open notetab light options configure notetab light configure proton
top

Erhalte Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator... nach Änderung der Sprachdatei.

Die Sprachdatei ist Perl Code !
Die Syntax von $TEXT{'date'} = "MM YYYY"; definiert den Schlüssel "date" für den Hash TEXT mit dem entsprechenden Wert "MM YYYY" und dem notwendigen Semikolon als Anweisungsende-Kennung. Der Wert ist in Anführungstrichen eingeschlossen.
Diese Syntax muss bei Änderung der Sprachdatei beachtet werden. Anderenfalls wird das Skript nicht funktionieren
Füge keinen Wert wie $TEXT{'mykey'} hinzu, der bereits existiert, denn dieser neue Wert wird den Inhalt des ersten überschreiben.
Soll HTML Code, der selbst Anführungsstriche enthält wie z.B. <p style="color:#efefef;">..., aus einem HTML Editor in die Sprachdatei eingefügt werden, dann kann qq{your text} zum Umschließen des Hash-Wertes anstelle der Anführungsstriche verwendet werden, also $TEXT{'mykey'} = qq{<p style="color:#efefef;">...</p>};

top

Erhalte CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. beim Starten des Skripts.

Einige Webserver z.B. Microsoft Information Server (das mag von dessen Konfiguration abhängen), arbeiten bevorzugt mit non-parsed-header (nph) Skripts, erwarten von dem Skript also vollständige HTTP Header Informationen. Beim Einsatz von efileman 7.1 and höher nenne die cgi Datei zu nph_scriptname.cgi um, im Normalfall also nph_efileman.cgi. Ältere Versionen (7.04) werden nicht funktionieren.

top

Erhalte Software error: Undefined subroutine &Apache::ROOT::cgi_2dbin::efileman::efileman_xx_2ecgi::sifre_kontrol called at /path/efileman_xx.cgi line xx. oder Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator... beim Arbeiten mit dem Skript.

Überprüfe die Laufzeitumgebung des Servers, wenn dort Apache:mod_perl zum Einsatz kommt und efileman7.04x ist installiert, dann installiere eine höhere Version von efileman.

top

Wie kann ich die vollständigen Pfadinformationen im Gehe zu-Element im Manager verstecken ?

Definiere den Benutzerpfad in der Benutzer Konfiguration mit einem Aliasnamen wie z.B. "/user/webdoc/data/=html root".

top

Das efileman Logo erscheint nicht. Für alle Dateien im Manager wird nur das "no.gif" oder gar nichts angezeigt.

3 Möglichkeiten :

  • Der Pfad oder die URL zum Verzeichnis der Grafiken/Icons in der Konfiguration ist falsch.
  • Es gibt kein Icon für die entsprechende Dateierweiterung z.B. images/pdf.gif für file.pdf.
  • Punkt 1 und 2 sind es nicht, aber der Pfad zu den Icons gibt ein Verzeichnis außerhalb des Dokumentenstamm-Verzeichnisses an. Es muss möglich sein, ein Icon im mit der URL direkt anzuzeigen, wie z.B mit http://www.efileman.de/images/efileman/zip.gif. Verschiebe das efileman/images Verzeichnis aus dem cgi-bin Verzeichnis, falls es sich noch dort befindet. Auf dieses Verzeichnis kann der Browser in den meisten Fällen nicht zugreifen.
top

Warum unterscheidet efileman zwischen Anwender Pfad und Anwender URL, und wie werden diese konfiguriert ?


Pfad Variable :  Für den Zugriff auf die Dokumente braucht der efileman immer eine Pfadangabe.
URL Variable :  Einerseits kann ein Dokument nur mit einer URL-Angabe direkt mit dem Anklicken des Links im Browser angezeigt werden (wenn der Browser den Dokumententyp kennt, zumindest html, txt, jpg, gif). Durch die Verwendung von URL's kann die Performance des efileman gesteigert werden, denn sämtliche Dokument-Anfragen werden dabei nur durch den Webserver bearbeitet. Wird für die Anwender URL eine Pfadangabe eingetragen, werden Dokument-Anforderungen immer durch den efileman bearbeitet.
Andererseits könnte für den einen oder anderen die Verwendung von Pfadangaben den Vorteil haben, dass beim Klick auf ein Dokument generell ein Download gestartet wird. Der Zugriff auf Dokumente ausserhalb des Dokumentenstammverzeichnisses (auch document-root, WWW-root oder HTML-root) oder innerhalb des cgi-bin Verzeichnisses (welches normalerweise über den Browser nicht zugreifbar sein sollte !), kann im übrigen nur über eine Pfadangabe in der URL Variablen realisiert werden.
Bei der Verwaltung einer Domäne, bei der das cgi-bin innerhalb der HTML-Root liegt, bietet sich eine Pfadangabe in der URL Variablen auch deshalb an, weil damit keine zwei Roots für den Zugriff auf die Dokumente definiert werden müssen:

Anwender Pfad : /home/www/web4/html=HTML,/home/www/web4/html/cgi-bin=CGI
Anwender URL : http://www.efileman.de,/home/www/web4/html/cgi-bin

Prinzipiel hat man damit also die Wahl zwischen:

Anwender Pfad : /home/www/web4/html/demo=Demo
Anwender URL : http://www.efileman.de/demo

und

Anwender Pfad : /home/www/web4/html/demo=Demo
Anwender URL : /home/www/web4/html/demo

Mit efileman 7.1 kann auf komplette Partitionen/Laufwerke zugegriffen werden :

Anwender Pfad : /=Root
Anwender URL : /

oder für ein Windows Server System mit Laufwerksbuchstabe und Doppelpunkt :

Anwender Pfad : D:=Laufwerk D
Anwender URL : D:

Wenn keine Aliasname vergeben wird, dann wird in der Dateimanageransicht des efileman (statt des nicht vorhandenen Aliasnames) der Pfad angezeigt.

Das Skript darf nicht zum Hacken anderer Accounts missbraucht werden. Wenn durch Eingabe von nicht vorgegebenen Pfaden Zugang zu anderen Dokumenten oder gar Systemdateien erlangt werden kann, sollte umgehend der Systemadministrator/Webmaster des jeweiligen Servers informiert werden, denn dann ist auch der eigenen Account durch Dritte angreifbar. Wenn es danach, anstelle einer Beseitigung der Sicherheitslücke, Ärger wegen des Einsatzes des efileman gibt, sollte man sich nach einem anderen Webhoster, der mehr Sicherheit bieten kann, umsehen.

top

CHMOD, Permissions, Zugriffsrechte ?

efileman stellt die Zugriffsrechte ( für UNIX-Systeme, für Windows nicht relevant ) nummerisch in oktaler Schreibweise dar.
Leserechte (r) sind durch den Wert 4, Schreibrechte (w) durch die 2 und Ausführungsrechte (x) durch eine 1 gegeben.

    r  w  x
    4  2  1

Diese Werte können je Anwenderkategorie aufaddiert werden (Besitzer, Gruppe, Andere) ....

        1   =   nur ausführen
    	2   =   nur schreiben
    	3   =   schreiben und ausführen (1+2)
    	4   =   nur lesen
    	5   =   lesen und ausführen (4+1)
    	6   =   lesen und schreiben (4+2)
    	7   =   lesen und schreiben and ausführen (4+2+1)

...und damit die Zugriffsrechte in Form von 3 Zahlen dargestellt werden :

         Besitzer  Gruppe  Andere
640 rw- rw- ---
754 rwx r-x r--
664 rw- rw- r--
top

Welche Zugriffsrechte (chmod) sollten für welche efileman-Verzeichnisse und Dateien vergeben werden ?

Für Version 7.04x und die jeweiligen Verzeichnisse entsprechend den Bedingungen auf efileman.de :
 

VerzeichnisPermissionsKommentar
efileman755lesen/schreiben/ausführen für Besitzer, lesen/ausführen für andere, setze 500 für alle cgi-Dateien wie efileman.cgi etc. mit Außnahme 600 für efileman_config.cgi
lang500lesen/ausführen für Besitzer, setze lesen (400) für Dateien im Verzeichnis
skins/default500lesen/ausführen für Besitzer, setze lesen für Dateien im Verzeichnis

Für efileman 7.1 und die jeweiligen Verzeichnisse entsprechend den Bedingungen auf efileman.de :
 

VerzeichnisPermissionsKommentar
efileman755lesen/schreiben/ausführen für Besitzer, lesen/ausführen für andere, setze 500 für efileman.cgi, 600 für efileman_config.pm und 500 für ef_check.cgi
lang500lesen/ausführen für Besitzer, keine Rechte für andere, setze lesen (400) für Dateien im Verzeichnis
skins/default500lesen/ausführen für Besitzer, keine Rechte für andere, setze lesen für Dateien im Verzeichnis
module500lesen/ausführen für Besitzer, keine Rechte für andere, setze lesen für Dateien im Verzeichnis
usrDateien700lesen/schreiben/ausführen für Besitzer, keine Rechte für andere, setze lesen/schreiben (600) für Dateien im Verzeichnis
logfile700lesen/schreiben/ausführen für Besitzer, keine Rechte für andere, setze lesen/schreiben für Dateien im Verzeichnis

Die aufgeführten Werte hängen davon ab, wer der Eigentümer der Dateien ist (du oder der Webserver), und welche anderen Prozesse Zugriff auf die Dateien benötigen, z.B. Datensicherungen. Auf einem MS Windows Serversystem sollten die entsprechenden Dateien zumindest als schreibgeschützt abgelegt werden. Das sollte mit jeder FTP Software durch Entfernen der Schreibrechte machbar sein. Rechte zum Ausführen der Dateien können auf einem MS Windows Serversystem nicht vergeben werden.

top

Wie sind die Namenskonventionen beim mehrmaligen Upload von Dateien gleichen Namens oder beim Upload in ein konfiguriertes generelles Upload-Verzeichnis ?

efileman 7.04 erzeugt die Dateien durch Hinzufügen von "_upload" zum Dateinamen im Falle eines zweiten Uploads einer Datei gleichen Names. Bei mehrfachem Upload einer Datei gleichen Namens wird diese zweite Datei jeweils überschrieben.

Dateiname
Dateiname_upload

efileman 7.1 erzeugt die Dateien durch Hinzufügen von "_upload_lfdNr" zum Dateinamen im Falle eines mehrfachen Uploads einer Datei gleichen Names, z.B. :

Dateiname
Dateiname_upload_1
Dateiname_upload_2
Dateiname_upload_...

Im Falle des Uploads in ein konfiguriertes generelles Upload-Verzeichnis erzeugt efileman die Dateien durch Hinzufügen von "Benutzername_" zum Dateinamen, z.B. :

Benutzername_Dateiname

oder kombiniert:

Benutzername_Dateiname
Benutzername_Dateiname_upload_1
Benutzername_Dateiname_upload_2
Benutzername_Dateiname_upload_...

"Benutzername_" wird nicht hinzugefügt, wenn ##username## in der Variablen Genereller Upload Pfad verwendet wird, da der Benutzer dadurch bereits identifiziert wurde, wie z.B.

/home/mydomain/uploads/##username##
oder
/home/mydomain/##username##/uploads

top

Mehr über das Upload-Thema, z.B. unvollständig übertragene Dateien und CGItempxxx Dateien.

efileman nutzt das Perl Standard-Modul cgi.pm, welches während des Uploads temporäre Dateien in der Form CGItmpxxx erzeugt.
Die folgende Beschreibung stammt aus der cgi.pm Dokumentation.

CGI.pm verarbeitet den Dateiupload. Normalerweise wird die übertragenen Datei dabei zuerst als temporäre Datei angelegt, welche nach Abschluss der Übertragung automatisch gelöscht wird. Die temporäre Datei wird mit Besitzerrechten angelegt (Mode 600). Das Verzeichnis für diese temporäre Datei wird wie folgt bestimmt:
  1. wenn der aktuelle User (z.B. "nobody") ein Verzeichnis namens "tmp" in in seinem Home-Verzeichnis hat, wird das benutzt ( nur Unix Systeme ).
  2. wenn die Umgebungsvariable TMPDIR existiert, wird das in dieser Variablen angegebene Verzeichnis verwendet
  3. Ansonsten werden bei Vorhandensein verwendet : /usr/tmp, /var/tmp, C:\temp, /tmp, /temp, ::Temporary Items, und \WWW_ROOT.
Jede dieser Angaben wird darauf überprüft, das es sich um ein Verzeichnis handelt, und dass dafür Schreibrechte bestehen. Wenn nicht, wird die nächste Angabe ausprobiert.

Die verschiedenen Browser übertragen leicht verschiedenen Angaben zum Namen der übertragenen Datei. Einige Browser übertragen nur den Dateinamen, andere auch den Pfad unter Verwendung der Notationsregeln des jeweiligen Betriebssystems des Anwenders. Unabhängig davon ist der vom Browser übertragene Dateiname immer der Name der Datei des Anwenders, und steht in keiner Beziehung zur temporären Datei, die CGI.pm während des Uploads erzeugt.
Gelegentlich treten Probleme bei der Verarbeitung des Uploads auf, zumeist dann, wenn der Anwender den "Stop"-Button des Browsers betätigt, bevor der Upload beendet ist.

Unter bestimmten Umständen ist die Laufzeit eines Skriptes zeitlich beschräkt (Serverkonfiguration), was zum Abbruch des Skriptes durch den Server aus verschiedenen Gründen führt. Der Datei-Upload und die dafür benötigte Zeit hängen von der Dateigröße, der Internetverbindung des Anwenders, und der Internetverbindung sowie der aktuellen Auslastung des Servers ab. Folgende Angaben sollten bei bestehenden Schwierigkeiten in der Serverkonfiguration auf Existenz und Einstellung überprüft werden:

Die temporäre Datei verbraucht natürlich auch Platz auf der Festplatte des Servers, welcher je nach verwendetem Verzeichnis begrenzt sein kann. Unter Umständen wird die temporäre Datei im Dokumentenstammverzeichnis angelegt, dann muss der Account also für die Dauer des Uploads sowohl die hochzuladene Datei als auch die temporäre Datei aufnehmen können.

Das Verzeichnis für diese temporären Dateien kann auch einmalig im CGI.pm definiert werden:
Dafür dienen die Zeilen ab 23 ff. im CGI Modul.

Code:
# HARD-CODED LOCATION FOR FILE UPLOAD TEMPORARY FILES.
# UNCOMMENT THIS ONLY IF YOU KNOW WHAT YOU'RE DOING.
# $TempFile::TMPDIRECTORY = '/usr/tmp';

ef_check.cgi zeigt einige dieser CGI Parameter an.

efileman change only CGI parameter $CGI::DISABLE_UPLOADS in case of a disabled upload permission for a user. I'm going to limit the upload by CGI parameter, but it's comment out at the moment. See ef_main.pm and look for

Code:
# $CGI::POST_MAX= ...

The # comment out the line. I'll use it in a later version.
Nicht mehr in finalen Version des efileman 7.1.

Die temporären Dateien werden nicht manuell angelegt, sondern werden vom Skript, unter Verwendung des originalen Dateinamens, nur an den Bestimmungsort kopiert.
Das CGI-Modul löscht die temporären Dateien nach Ende des Uploads normalerweise automatisch, es sei denn, der Skripttask wurde durch den Server oder andere Umstände beendet.

Sollten die temporäre Dateien (CGItempxxx) im Account, zumeist im Dokumentenstammverzeichnis, angelegt und nicht automatisch gelöscht werden können, sollte der Serveradministrator um eine Änderung des Pfades gebeten werden.

Siehe die CGI Dokumentation für weitere Informationen und insbesondere die CGI Revision History im Falle von Schwierigkeiten beim Upload bei Nutzung älterer Versionen von CGI.pm. Es kann nie schaden, zuerst die aktuelle Version des Moduls zu installieren.

Andere Gründe für einen nicht funktionierenden Upload können auch Firewall- und Proxyeinstellungen sein. Einige lokal installierte Virusscanner arbeiten wie ein Proxy. Die entsprechenden Filterregel sollten ebenfalls überprüft oder die Anwendungen zu Testzwecken zeitweilig deaktiert werden.

top

Erhalte "...Page not found or cannot display..." nach dem Login oder nach dem Ändern der Anwender-Pfadangaben im Admin Bereich.

Jeder Browser hat ein Zeitlimit. Das bedeutet, der Browser wartet eine gewisse Zeit (beim MS Internet Explorer i.d.R. 5 Minuten) auf eine Serverantwort, also die angeforderte Seite, und bricht danach mit einer Fehlermeldung ab. Dafür gibt es eine Menge Ursachen. Im Normalfall reicht es, mittels Aktualisieren-Funktion/Button die Seite erneut anzufordern. Siehe auch das nächste Thema.

top

Warum dauert es so lange, bis meine Dateien angezeigt werden ?

Zusätzlich zu Bandbreite und Qualität der Internetverbindung, dem verwendeten Modem und der Performance des Servers, können einer oder mehrere der folgende Gründe eine Rolle spielen :

  • Jeder Anwender, der mit dem efileman arbeitet, und alle anderen Prozesse, die zur gleichen Zeit laufen, verbrauchen einen Teil der Leistung des Servers. Manche Prozesse mehr, insbesondere Prozesse, die lesend oder schreibend auf die Festplatte zugreifen, andere weniger.
  • Der efileman Default Manager Skin hat eine Listbox (neben dem "Gehe zu" Button), die alle Unterverzeichnisse in der aktuellen root auflistet. Wenn es nun eine große Anzahl von Unterverzeichnissen und/oder eine tiefe Verzeichnisstruktur gibt, dann benötigt der efileman die entsprechende Zeit und Serverleistung, die notwendigen Informationen zu ermitteln und anzuzeigen. Die Verwendung eines Manager Skins ohne diese Listbox kann im Fall des Falles helfen, aber die Kopieren/Verschieben-Button/Funktionen können ohne die Informationen dieser Listbox nicht funktionieren.
  • Der efileman sammelt für die Manageransicht zuerst alle Datei-/Verzeichnisinformationen ein, um sie entsprechend der letzten Anwenderanforderung sortieren zu können. Bei einer großen Anzahl von Dateien kann das etwas dauern.
  • In den efileman Default Skin Dateien wurden Tabellen (HTML) verwendet. Das hat den Nachteil, dass der Inhalt der Tabelle in der angeforderten Seite erst angezeigt wird, wenn die Tabelle vollständig zum Browser übertragen wurde.
top

Warum funktioniert der Download-Zähler des efileman 7.1 nicht ?

Zwei Dinge sind notwendig, damit der Download-Zähler funktionieren kann :

  1. Aktiviere den Download-Zähler im Admin - globale Einstellungen.
  2. definiere einen absoluten Pfad für die Anwender URL des entsprechenden Anwenders, keine URL, z.B.

    Anwender Pfad = "/www/download/files=Dateien"
    Anwender URL = "/www/download/files"

    denn nur damit ist der efileman in den Download-Prozess involviert und damit auch in der Lage, diese zu zählen.
top

Wie können zip-Dateien mit dem Modul Archive::Zip erzeugt werden, wenn das Modul auf dem Server nicht installiert ist ? Oder was kann im Fall einer installierten, aber zu alten Version von Archive::Zip getan werden ?

Frage zuerst den Server Administrator nach einer Installation bzw. einem Update des Moduls. Folge der nachfolgenden Beschreibung nur im Fall von Schwierigkeiten.

Überprüfe ob Compress::Zlib auf dem Server installiert ist. Wenn Ja, lade das neueste Archive::Zip Module von http://www.bike-nomad.com/perl/ oder suche in CPAN.
Im heruntergeladenen Archive findet sich ein Verzeichnis lib und in lib ein Verzeichnis Archive. Kopiere das Verzeichnis Archive mitsamt Inhalt in das efileman Verzeichnis auf dem Account. Das ist alles !
Das wurde zwar bereits erfolgreich mit einigen Anwendern getestet und sollte i.d.R. funktionieren, muss aber nicht.

top