PHP Berechtigungen bei fopen(), dir() etc.

steveeeee

Cadet 3rd Year
Registriert
Okt. 2009
Beiträge
63
Huhu,

ich möchte gerne über ein PHP-Interface verschiedene Dateien auf meinem Server verändern und einsehen können.

Mein Apach-document_root liegt zb. in
/home/steve/www/
und von dort möchte ich mittels php auf dokumente in
/home/steve/dokumente/
zugreifen.

Derzeit bekomme ich als Fehlermeldung:

Warning: dir(/home/steve/dokumente/) [function.dir]: failed to open dir: Keine Berechtigung in xxx.php on line 49

Zie Zugriffsrechte des Ordners lauten 777 also gehe ich davon aus, dass von apache oder von php der zugriff auf diesen ordner beschränkt wird. wo muss ich mit meiner fehlersuche beginnen?

Vielen Dank im Vorraus,


steve
 
Ich weis nicht ob das die Fehlermeldung wirft aber fopen wird von vielen Hostern deaktiviert da es eine Potenzjelle sicherheitslücke darstellt wenn man es nicht 100% sauber schreibt. Schau mal ob bei dir die einstellung auf on oder off steht. Mit fopen sollte man heute nicht mehr arbeiten ich glaub aus PHP6 ist das sogar schon rausgeflogen. Ich kenn mich mit der reinen PHP Programmierung nicht aus aber fopen wird meines wissen nur genutz um datein auf externen Server zu manipulieren (geht zwar auch intern aber na ja ^^) da du intern bist solltest du hier eine andere Methode suchen. Ich erlaub fopen meinen PHP Programmieren zumindestens nicht mehr ;).
 
Zuletzt bearbeitet:
Huhu,


lassen wir fopen() mal raus. Der Server gehört mir selber von daher habe ich alle möglichkeiten die Konfigurationen zu verändern: fopen() etc. ist alles erlaubt, der Safe-Mode ist ausgeschaltet.

<ironie>
Tut mir leid, auf diese grandiose Idee, im Manual nachzuschauen, bin ich noch nicht gekommen. :freak:
</ironie>

Es geht mir darum, dass ich keinen Schimmer davon habe, warum die Fehlermeldung kommt, ich hätte keine Berechtigung dazu, diese Datei zu öffnen, bzw. welche Einstellung das momentan noch verbietet.

@ 1668mib:
Welchen Abschnitt unter fopen() sollte ich mir denn nochmal genauer angucken? Wäre schön wenn du etwas konkreter werden könntest, wenn du weisst wo mein Fehler begraben liegt.

steve
 
Hast du open_basedir gecheckt? Steht auf der Seite von fopen().

Ich hab nicht wahnsinnig viel Ahnung von PHP selbst - aber die Meldung kommt wegen einem Directory. Nur zur Sicherheit, du versuchst schon wirklich ein File innerhalb des Directories und nicht das Directory selbst zu öffnen?

Hast Du sonst nen Symlink nach /home/steve/www versucht?

Da Du anscheinend mit mod_php arbeitest - läuft der Apache unter nem anderen User? So könnte ich mir noch vorstellen, dass UID/GID-Checks fehlschlagen. Chroot'et der Apache/PHP?

Davon abgesehen: 777 ist immer böse und überflüssig. Nicht einfach blind Rechte geben nur um das Symptom zu beheben, sondern den Grund verstehen und dann die Rechte so minimal wie möglich freigeben.

Ansonsten kannst du auch mit stat versuchen zu schauen, wo es scheitert.
 
Man sollte in Erwägung ziehen, dass möglicherweise eine PHP-Konfigurationseinstellung den Zugriff auf Dateien außerhalb des htdocs Verzeichnisses unterbindet.

@EDIT: nacer's rat natürlich unbedingt befolgen - niemals 0777 verteilen, wenn das nicht absolut notwendig ist!

@nacer: müsste er aufgrund des letzten exec-flags nicht doch ins Verzeichnis wechseln können?
 
Zuletzt bearbeitet:
Zurück
Oben