Anlegen von Verzeichnissen - Keine Zugriffsberechtigung
max
- php
0 Axel Richter0 max
0 Thomas Schmieder0 max
Hallo,
ich versuche, über ein PHP-Script ein Verzeichnis anzulegen, um darin Dateien anlegen zu lassen. Dazu habe ich ein ganz einfaches Beispielscript:
mkdir('../login/4', 0777);
Habe jedoch keine Zugriffsrechte auf das erstellte Verzeichnis und kann damit keine Dateien darin anlegen. Laut dem Supportforum meines Webspace-Providers soll ich ein chown durchführen. Also gut:
chown('../login/4', 'web9'); //web9 ist der Name des FTP-Users
Funktioniert allerdings nicht... weil das nur geht, wenn der aufrufende Benutzer "root" ist. Der Apache-Server läuft jedoch als User "wwwrun" und somit ist ein chown nicht möglich.
Es muss doch irgendeine Lösung für dieses Problem geben? Warum kann ich mit PHP keine Unterordner oder Dateien in dem erstellen Verzeichnis erstellen?
Es ist doch nichts ungewönliches, über ein PHP-Script Verzeichnisse und Dateien zu erstellen
Grüsse
max
Hallo,
ich versuche, über ein PHP-Script ein Verzeichnis anzulegen, um darin Dateien anlegen zu lassen. Dazu habe ich ein ganz einfaches Beispielscript:
mkdir('../login/4', 0777);
Habe jedoch keine Zugriffsrechte auf das erstellte Verzeichnis und kann damit keine Dateien darin anlegen. Laut dem Supportforum meines Webspace-Providers soll ich ein chown durchführen. Also gut:
Schau mal bei
http://www.php.net/manual/de/function.mkdir.php
rein:
The mode on your directory is affected by your current umask. It will end
up having (<mkdir-mode> and (not <umask>)). If you want to create one
that is publicly readable, do something like this:
$oldumask = umask(0);
mkdir('mydir', 0777); // or even 01777 so you get the sticky bit set
umask($oldumask);
Wars das?
Gruß
Axel
$oldumask = umask(0);
mkdir('mydir', 0777); // or even 01777 so you get the sticky bit set
umask($oldumask);
Wars das?
Leider nicht... folgendes Script habe ich jetzt:
88 $oldumask = umask(0);
89 mkdir('../../login/test', 0777);
90 mkdir('../../login/test/test2', 0777);
91 umask($oldumask);
Beim Ausführen des Scripts erscheint folgende Meldung:
Warning: SAFE MODE Restriction in effect. The script whose uid is 864 is not allowed to access ../../login/test owned by uid 30 in /home/www/web115/html/admin/deutsch/add_kunden2.php on line 90
Hallo Max,
das ist doch ne Aussage.
Das Script gehört Dir (User ID 8hundert&Quark)
Der Ordner gehört dem wwwrun (Das ist der Apache/PHP-Deamon)
[ich habe eben mal einige Spielserver Suse 7.2 durchgeschaut, da hat er immer die UserID 30]
Du musst versuchen, das Script dem Deamon zu schenken. Dafür lommt chown in Frage.
am Linux-Prompt (Telnet oder SSH)
chown wwwrun scriptname
Schon gibts ne Fehlermeldung, weil Du nicht root bist. So ein Mist.
Wie bekommst Du denn überhaupt Scripte auf den Server rauf?
Möglichkeit wäre da ein Upload mit hilfe von PHP durchzuführen, dann gehören die Scripte automatsich dem Deamon. Aber wenn Du von deinem Provider kein solches Upload-Script bekommen hast, dann sieht es schlecht aus.
Sortier nochmal und melde dich wieder.
Tom
Hallo Max,
das chown musst Du über einen SSH- oder FTP-Client durchführen, mit dem Du dich direkt auf dem Server einloggen kannst. Theoretisch geht es auch mit Telnet, aber das dürfte es (hoffentlich) nicht mehr geben bei Deinem Provider. Das wird aber auch nur gehen, wenn Du als root rankommst.
Der PHP-Deamon hat keine Rechte für chown(), wenn er nicht unter root läuft. Sollte er auch nicht bekommen. Das wäre sehr gefährlich.
Der PHP-Deamon ist vielleicht Mitglied einer Gruppe, auf die Du Einfluss hast. Dann mach ein chgrp für das Hauptverzeichnis, in dem Du mit php die Unterverzeichnisse anlegen willst. Und mit 0777 anzulegen ist genauso gefährlich. es reicht dann 0070 bzw 0770.
Grüße
Tom
Ich möchte mich ja jetzt nicht an dem chown festbeissen. Es geht darum, dass das PHP-Script mehrere Verzeichnisse anlegen soll, aber bereits bei einem erstellten Verzeichnis keine Rechte mehr hat, dort ein weiteres Unterverzeichnis zu erstellen.
Und da kommt es wieder zum Ausgangspunkt zurück: Es muss doch möglich sein, mit PHP eine Verzeichnisstruktur zu erstellen?
Grüsse
max
Hallo Max,
dann leifer doch mal eine vollwertige Fehlerbeschreibung.
Du legst mit PHP ein Verzeichnis an.
bitte hier den Code:
Dann gibst Du auf der Konsole (ggf. SSH) ls -l ein und schaust, was da steht für das Verzeichnis
Owner:
Group:
Rechte: ??? ??? ???
Danach sehen wir weiter.
Gruß
Tom