Datei-/Bildupload

Alle ausklappen Alle einklappen

Ich kann zwar Bilder hochladen, aber sie werden nicht angezeigt. Warum?

Wenn Sie über ein CGI-Skript (z.B. Perl oder PHP) eine Datei auf dem Server anlegen, so wird diese aus Sicherheitsgründen mit den Rechten 600 angelegt, damit nur Ihre Skripte darauf Zugriff haben.

Dieses Sicherheitsfeature gewährleistet beispielsweise, dass Sessiondateien oder Plaintext-Datendateien nur von Ihnen ausgelesen werden können. Der Webserver läuft unter einem anderen Linux-Benutzer als Ihre Skripte, jedoch in der selben Gruppe. Da die Rechte 600 jedoch der Gruppe keinerlei Berechtigungen einräumen, kann der Apache-Server folglich auch die Bilddatei nicht lesen und ausgeben.

Die Lösung:

Sie müssen in Ihrem Skript der Datei daher nach dem Upload Leserechte für die Gruppe 'nobody' einräumen, damit das Bild im Browser angezeigt werden kann. Die richtige Rechtevergabe hierfür ist 640.

Ein Beispiel anhand der Skriptsprache PHP:

Üblicherweise wird das hochgeladene Bild mit dem Befehl move_uploaded_file ($uploadfile, $zieldatei) im Zielverzeichnis angelegt. Die Rechtevergabe fügt man am besten gleich im Anschluss hieran über folgenden Befehl ein:

chmod ($zieldatei, 0640); ("$zieldatei" dient hier lediglich als Beispiel und muss an das von Ihnen verwendete Skript angepasst werden)

Es gibt zahlreiche, häufig verwendete Anwendungen, die eine wie oben beschriebene Anpassung erfordern. Zu nennen ist hier beispielsweise das Shopsystem "OS Commerce".

Aufgrund der nahezu unendlichen Zahl an verfügbaren Skripten bitten wir um Ihr Verständnis, dass wir Ihnen an dieser Stelle leider keine Informationen über die exakte Stelle Ihres Skriptes nennen können, an welcher der chmod-Befehl eingefügt werden muss. Bitte durchsuchen Sie bei Bedarf einfach alle php-Skripte nach der Zeichenkette "move_uploaded_file", um die richtige Stelle(n) zu finden.

Zielgerichteter können Sie vorgehen, indem Sie die action-Angabe des FORM-Tags des Upload-Formulars ermitteln und dieses Zielscript durchsuchen und abändern. Das erfordert jedoch moderate HTML- und PHP-Kenntnisse.

Weitere Informationen finden Sie in der offiziellen PHP-Dokumentation zu den Befehlen "move_uploaded_file()" und "chmod()":

Während des Uploads kommt es zu einem Timeout / weißen Bildschirm - das Bild / die Datei kommt nicht an. Wieso?

Bei unseren SharedHosting-Tarifen teilen sich mehrere Kunden den selben Server. Damit ein Kunde nicht die gesamte Serverkapazität für sich beanspruchen und somit die Präsenzen anderer Kunden auf dem Server beeinträchtigen kann, gibt es für CGI-Skripte (PHP, Perl, etc.) eine Laufzeitbegrenzung von maximal 300 Sekunden.

Wenn Sie einen HTTP-Upload starten, sendet der Browser die Datei kontinuierlich an den Server. Dort läuft wiederum Ihr Upload-Skript und nimmt die gesendeten Daten entgegen. Wenn Sie nun eine sehr große Datei übertragen möchten bzw. eine schlechte Internet-Anbindung haben (z.B. über ein langsames Modem), so kann es durchaus vorkommen, dass das Übertragen der Datei zum Server länger als 300 Sekunden dauert. Da jedoch alle Skripte nach 300 Sekunden automatisch beendet werden, wird auch das Upload-Skript beendet, bevor es alle Daten angenommen und am angegebenen Zielort als Datei erstellen kann. Es erfolgt daher auch keinerlei Ausgabe mehr von diesem Skript, das Browserfenster bleibt kommentarlos leer bzw. weiß.

Abhilfe schafft hier entweder eine schnellere Internetanbindung, oder der Umzug auf einen ManagedServer, da Sie dort die 300 Sekunden Laufzeitbeschränkung deaktivieren und somit beliebig große Dateien übertragen können (ein ManagedServer steht im Gegensatz zu den Angeboten im SharedHosting-Bereich ausschließlich einem Kunden zur Verfügung).

Eine weitere Alternative wäre das Übertragen großer Dateien per FTP (bei dem es keine 300-Sekunden-Begrenzung gibt) in ein spezielles Upload-Verzeichnis, auf das dann wiederum ein Skript zugreifen kann, um das Bild / die Datei in den richtigen Ordner zu verschieben und ggf. in der Datenbank einzutragen.

Geben sie uns Ihr Feedback

Das freut uns und wir haben Ihre positive Rückmeldung vermerkt. Wenn Sie möchten, teilen Sie uns gerne noch Details mit: Was hat Ihnen besonders gefallen? Welche Informationen waren besonders hilfreich?

Leider können wir Ihr Feedback nicht direkt beantworten, wir verwenden es jedoch, um die FAQ weiterzuentwickeln und zu verbessern. Wir freuen uns auf Ihre Antwort!

Geben sie uns Ihr Feedback

Es tut uns leid, dass Sie mit den FAQ nicht zufrieden sind. Welche Information vermissen Sie? Was können wir besser machen?

Leider können wir Ihr Feedback nicht direkt beantworten, wir verwenden es jedoch, um die FAQ weiterzuentwickeln und zu verbessern. Wir freuen uns auf Ihre Antwort!