Ihre Wunschadresse: www.
  Sie sind hier:  » McAc.net  » FAQs  » Technische FAQs  » Datei-/Bildupload 

Datei-/Bildupload

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 90 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 90 Sekunden dauert. Da jedoch alle Skripte nach 90 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 eventuell eine schnellere Internetanbindung.

Eine weitere Alternative wäre das Übertragen großer Dateien per FTP (bei dem es keine 90-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.

Nach oben

Ich kann zwar Bilder hochladen, aber diese 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. Sie müssen in Ihrem Skript daher nach dem Upload der Datei Leserechte für die Gruppe 'nobody' einräumen, damit das Bild im Browser angezeigt werden kann. Die richtige Rechtevergabe hierfür ist 640. Nachfolgend möchten wir Ihnen diesen Sachverhalt am Beispiel der Skriptsprache PHP gerne erläutern:

Ü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 Anschluß hieran über folgenden Befehl ein:

chmod ($zieldatei, 0640); ("$zieldatei" dient hier lediglich als Anschauungsbeispiel und muss bitte 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 hierzu finden Sie in der offiziellen PHP-Dokumentation zu den Befehlen "move_uploaded_file()" und "chmod()":

de.php.net/manual/de/function.move-uploaded-file.php

de.php.net/manual/de/function.chmod.php

Nach oben