Hauptmenü

Untermenü

PHP/MySQL - Praxistutorial 4 - Rechte setzen

1. Die Abschnitte

2. Probleme

Kommen wir jetzt zu den möglichen Fehlerquellen, wenn der Upload fehlschlägt. Dabei gibt es mehrere Möglichkeiten. Allerdings gilt das, wie schon gesagt, nur für diejenigen, die das auf einem Unix-System entwickeln.

3. Der Ordner kann nicht erstellt werden

In dem Fall hat eure Script nicht die benötigten Rechte. Das passiert zum Beispiel dann, wenn ihr in euerm Webverzeichnis per Hand einen Ordner anlegt und den Beispielcode dort hin kopiert. In diesem Fall müsst ihr die Schreibrechte des Ordners(!) anpassen. Dabei ist es egal ob ihr auf einem lokalen System arbeitet, oder per FTP. Denn der Ordner muss volle Zugriffsrechte für alle haben, also 777. Zumindest bei meinem Provider ist es so.

4. Das safe_mode-Problem

Wenn ihr eine Meldung à la Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid ... zu Gesicht bekommt, dann habt ihr damit zu tun. In dem Fall habt ihr zwei Möglichkeiten.

Besitzer per PHP ändern

Das geschieht mit der Funktion chown. Der erste Parameter bezieht sich auf die Datei, der zweite auf den Besitzer.


$dir mkdir ($folder);
chown ($folder'neuer_user');

Wichtig

Der Besitzer des Ordners bla muss identisch sein mit dem der Datei index.php. Das könnte zum Beispiel so aussehen.

FTP-Rechte

Aber

Viele Provider klemmen den chown-Befehl ab. Da gibt es nur eine Lösung.

Ordner per FTP erstellen

Das ist die letzte Möglichkeit. Ihr erstellt zuerst(!) den Ordner, setzt die Rechte auf 777 und ruft dann erst das Script auf.

5. Individuelle Rechte setzen

mkdir

Zumindest bei mir wird automatisch ein 666 gesetzt, wenn man nicht dezidiert einen anderen Wert angibt. Wenn man nun die Rechte individuell vergeben will, so geschieht das mit dem zweiten Parameter. Und das könnte so aussehen.


$dir mkdir ($folder0777);

Laut Spezifikation muss der Wert oktal angegeben werden. Vergesst also nicht die 0 zu Beginn. Und noch etwas. Diese Angabe muss nicht in Anführungszeichen oder Hochkommata gesetzt werden.

Die Datei

Hier kann man direkt nach dem Verschieben die Rechte setzen. Und das geschieht mit chmod. Kleiner Tipp. Auch hier ist die Fehlerbehandlung nicht sauber. Nur so als Hinweis.


if (move_uploaded_file($file_tmp$folder.'/'.$file))
{
  chmod ($folder.'/'.$file0666);
  return 'Supi, hat geklappt';
}

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt