Upload von Dateien via PHP

Dateigrößen und Schreibrechte

Funktioniert nicht: MAX_FILE_SIZE

Auf zahlreichen Websites und auch im PHPManual wird kolportiert, dass man zu große Dateien schon vor dem Upload abweisen könne. Dazu müsse man dem Browser die maximale Dateigröße (im folgenden Beispiel 100 MByte) lediglich über MAX_FILE_SIZE per Web-Formular mitteilen:

<input type="hidden" name=
"MAX_FILE_SIZE" value="100000">

Tatsächlich gibt es keinen Browser, der diese Funktion unterstützt.

Der Parameter wird lediglich von PHP ausgewertet - also erst nach dem Upload. Nach dazu ließe sich dieser Parameter, wenn er denn eine Wirkung hätte, benutzerseitig leicht manipulieren.

In der Praxis hat er aus diesen Gründen keine Bedeutung.

Schreibrechte

Zugriffsberechtigungen auf Webservern werden regelmäßig viel zu großzügig vergeben, was Sicherheitsrisiken mit sich bringt. Deshalb zeigen wir Ihnen, wie Sie vorgehen sollten, um dem Webserver die notwendigen Schreibrechte für den uploads-Ordner einzuräumen.

Nachdem Sie den uploads-Ordner angelegt haben rufen Sie im FTP-Client dessen Eigenschaften auf, die beispielsweise so aussehen:

drwxr-xr-x 5 ftpuser ftpuser 4096
Apr 29 2009 uploads

Das d ganz links zeigt, dass es sich hier um ein Verzeichnis (directory) handelt. Die beiden ftpuser verraten, dass das Verzeichnis dem Benutzer ftpuser und der gleichnamigen Benutzergruppe gehört. Aus den auf das d folgenden Zeichen rwx geht hervor, dass der Benutzer ftpuser lesen darf, welche Dateien in dem Ordner stecken (r steht für read), dass er Dateien hineinschreiben (w für write) und in den Ordner wechseln (x) darf.

Das mittlere Dreierpäckchen (r-x) zeigt die Rechte der übrigen Nutzer aus der Gruppe ftpuser. Ihnen fehlt das Schreibrecht genauso wie der dritten Gruppe, den sonstigen am System angemeldeten Benutzern. Welche Benutzer es auf dem Server gibt und welchen Gruppen sie angehören, steht in der Serverkonfiguration (/etc/passwd und /etc/groups), die nur Betreibern eines Root-Servers zugänglich ist.

Wem ein SSH-Zugang zum Server fehlt, der tastet sich per FTP. Setzen Sie über den Eigenschaften-Dialog zusätzlich die Schreibrechte für die Gruppe des Eigentümers (rwxrwxr-x). Schlagen Uploads über das PHP-Skript danach noch fehl, so setzen Sie auch das Schreibrecht für die sonstigen Benutzer (rwxrwxrwx).

Ihr FTP-Client zeigt Benutzerrechte in Zahlenform an? Beachten Sie die Infos zur sogenannten Oktalnotation hier.

Wesentlich komfortabler ist da schon die Lösung per SSH.

Nach dem Login wechseln Sie in das Verzeichnis, das den Ordner uploads enthält. Mit ls-l | grep uploads bringen Sie dessen Eigenschaften auf den Monitor.ps aux | grep-i apache zeigt den Webserver-Prozess an:

www-data 8141 /usr/sbin/apache2
-k start

Der Webserver läuft demnach unter dem Benutzerkonto www-data. Mit chown www-datauploads macht man www-data zum Eigentümer von uploads, wie ls-l bestätigt:

drwxr-xr-x 5 www-data ftpuser 4096
Apr 29 2009 uploads

Der Webserver als neuer Eigentümer des Ordners darf jetzt hineinschreiben, der Benutzer ftpuser aber nicht mehr. Geben Sie einfach der Gruppe ftpuser mit chmod g+w Schreibrechte, um das zu korrigieren.

Mehr zum Thema

HTML5: Quick Reference Guide
Ratgeber: "HTML5"

Die wichtigsten Tags auf einen Blick: In unserem praktischen Arbeitsblatt finden Sie einen wertvollen Begleiter für die Umstellung Ihrer Webprojekte…
internet, webdesign, google, content, ranking, seo, suchmaschine
Ratgeber: Urheberrecht

Einzigartige Inhalte bieten Lesern Mehrwert und sind ein wichtiges Qualitätsmerkmal. Ärgerlich, wenn sich jemand durch Kopieren an fremden…
Die besten HTML5-Tipps
Neue Tipps & Tricks für blitz.io

Wer die Leistung einer Applikation ermitteln möchte, braucht keine Skripte zu schreiben, sondern kann einen der zahlreichen Online-Dienste…
image.jpg
Ratgeber: Webentwicklung

Die clientseitige Javascript-Entwicklung bietet fast keine Entwicklungsumgebungen und auch keine vernünftigen Werkzeuge zur Fehlersuche. Eine der…
internet, webdesign, meteor, webapplikationen
Ratgeber

Mit Meteor sollen Entwickler in kurzer Zeit Umgebungen für Webapplikationen erstellen können, ohne sich um lästige Details kümmern zu müssen. Wir…