Verzeichnis erstellen mit mkdir schlägt fehl
Andreas
- php
Moin,
das ist jetzt wieder einer dieser Postings, die mit dem Satz "Bei mir lokal laeuft alles wunderbar, aber bei meinem Provider nicht..." anfangen. Ich hab das Archiv schon durchwuehlt, konnte aber keine Loesung zu meinem Problem finden.
Ich moechte (ganz einfach) ein Verzeichnis mit meinem PHP Skript erstellen. Fuehre ich den Befehl
mkdir("test", 0777);
innerhalb meines Skripts aus, erscheint die Fehlermeldung 'Permission denied, etc.". Erstelle ich im gleichen Verzeichnis aber eine Datei, die ausschliesslich den folgenden Inhalt hat:
<?php
mkdir("test", 0777);
?>
und ich rufe die Datei direkt ueber die URL auf; klappt es wunderbar. Alle Dateien und Ordner haben die Schreibrechte 777 oder 666.
Zu erwaehnen waere noch, dass mein PHP Skript (in dem das Verzeichniserstellen nicht funktioniert) mit required in eine andere php-Datei eingebettet wird. Diese hat aber auch 666 als Schreibrecht. Entscheidend sollten aber die Rechte der einzubettenden Datei sein, oder?
Ach ja: lokal laeuft bei mir alles wunderbar.
Bin dankbar fuer jeden Hinweis,
Andreas.
hi
innerhalb meines Skripts aus, erscheint die Fehlermeldung 'Permission denied, etc.". Erstelle ich im gleichen Verzeichnis aber eine Datei, die ausschliesslich den folgenden Inhalt hat:
<?php
mkdir("test", 0777);
?>
und ich rufe die Datei direkt ueber die URL auf; klappt es wunderbar. Alle Dateien und Ordner haben die Schreibrechte 777 oder 666.
dann liegts vielleicht am require...
lies doch nochmal hier nach
http://www.php.net/manual/de/function.require.php
gruss
luca
danke, hab dort aber leider nichts finden koennen. Ich habe auch ganz viele andere requires in meinem Projekt, die alle ganz hervorragend zu funktionieren scheinen und die sich syntaktischen nicht von diesem require-Aufruf unterscheiden.
hi
innerhalb meines Skripts aus, erscheint die Fehlermeldung 'Permission denied, etc.". Erstelle ich im gleichen Verzeichnis aber eine Datei, die ausschliesslich den folgenden Inhalt hat:
<?php
mkdir("test", 0777);
?>
und ich rufe die Datei direkt ueber die URL auf; klappt es wunderbar. Alle Dateien und Ordner haben die Schreibrechte 777 oder 666.
dann liegts vielleicht am require...
lies doch nochmal hier nach
http://www.php.net/manual/de/function.require.php
gruss
luca
Hi
hast du mal versucht die datei mit dem code:
<?php
mkdir("test", 0777);
?>
per require in eine gaaaanz einfache datei zu laden..
also, eine datei die wirklich nur den requirebefehl enthält?
gibst du wirklich nur ("test",0777) an? oder mehr pfadangaben?
gruss
luca
danke, hab dort aber leider nichts finden koennen. Ich habe auch ganz viele andere requires in meinem Projekt, die alle ganz hervorragend zu funktionieren scheinen und die sich syntaktischen nicht von diesem require-Aufruf unterscheiden.
hi
innerhalb meines Skripts aus, erscheint die Fehlermeldung 'Permission denied, etc.". Erstelle ich im gleichen Verzeichnis aber eine Datei, die ausschliesslich den folgenden Inhalt hat:
<?php
mkdir("test", 0777);
?>
und ich rufe die Datei direkt ueber die URL auf; klappt es wunderbar. Alle Dateien und Ordner haben die Schreibrechte 777 oder 666.
dann liegts vielleicht am require...
lies doch nochmal hier nach
http://www.php.net/manual/de/function.require.php
gruss
luca
vielleicht liegts hieran:
http://go4xml.com/kurs/php/faq/faq-phpinterpreter.php#phpinterpreter-17
kannst ja mal schauen wie die einstellungen sind:
http://go4xml.com/kurs/php/faq/faq-phpinterpreter.php#phpinterpreter-9
gruss
luca
vielen dank fuer die links.
Ich habe mithilfe von phpinfo() die Einstellungen meines Providers ueberprueft.
safe_mode ist zwar off, aber sowohl bei safe_mode_include_dir
als auch safe_mode_exec_dir steht 'no value', wobei ich nicht herausfinden konnte, was fuer eine Auswirkung 'no value' hat; ob das nun ja oder nein heisst.
Der safe_mode bewirkt generell offensichtlich, dass Dateien und Verzeichnisse nur von denjenigen veraendert werden, die sie erstellt haben. Wenn die Dateien und Ordner aber ausschliesslich von mir angelegt wurden, sollte auch ein aktivierter safe_mode keine Problem bereiten. So habe ich es jedenfalls verstanden.
gruebel, ich hoffe ja auf noch eine Idee von dir, aber ich bin mit meinem Latein am Ende (und mit meinem franzoesisch auch; sitz naemlich gerad in Frankreich in einer Firma und versuche, mit diesem komischen Tastaturlayout zurechtzukommen. Und ich dachte immer, das englische waere schon merkwuerdig). Im schlimmsten Fall muss ich ein bisschen 'Reverse Engineering' betreiben und das Projekt Zeile fuer Zeile neu schreiben und gucken, an welcher Stelle es hakt.
Vielen Dank fuer die Hilfe,
Andreas.
vielleicht liegts hieran:
http://go4xml.com/kurs/php/faq/faq-phpinterpreter.php#phpinterpreter-17
kannst ja mal schauen wie die einstellungen sind:
http://go4xml.com/kurs/php/faq/faq-phpinterpreter.php#phpinterpreter-9
gruss
luca
mhm, gute Idee. Habe ich auch gleich gemacht und in der Tat eine gaaaaanz einfache Datei erzeugt:
<?php
require("test.php");
?>
Hat aber leider gut geklappt.
Eine Pfadangabe habe ich mich gar nicht getraut anzugeben, aber spaeter ist eine vorgesehen.
vielen dank + gruss
Andreas.
Hi
hast du mal versucht die datei mit dem code:<?php
mkdir("test", 0777);
?>
per require in eine gaaaanz einfache datei zu laden..
also, eine datei die wirklich nur den requirebefehl enthält?
gibst du wirklich nur ("test",0777) an? oder mehr pfadangaben?
gruss
luca
danke, hab dort aber leider nichts finden koennen. Ich habe auch ganz viele andere requires in meinem Projekt, die alle ganz hervorragend zu funktionieren scheinen und die sich syntaktischen nicht von diesem require-Aufruf unterscheiden.
hi
innerhalb meines Skripts aus, erscheint die Fehlermeldung 'Permission denied, etc.". Erstelle ich im gleichen Verzeichnis aber eine Datei, die ausschliesslich den folgenden Inhalt hat:
<?php
mkdir("test", 0777);
?>
und ich rufe die Datei direkt ueber die URL auf; klappt es wunderbar. Alle Dateien und Ordner haben die Schreibrechte 777 oder 666.
dann liegts vielleicht am require...
lies doch nochmal hier nach
http://www.php.net/manual/de/function.require.php
gruss
luca
Hallo Andreas,
wenn Du mit Hilfe von PHP und der Funktion mkdir() ein Verzeichnis anlegst, haben die rechte nix mit denen des Skripts zu tun, aus dem heraus das gemacht wird.
Wesentlich sind die Rechte des PHP-Parsers, der ja meistens als Modul des Apache läuft. Der hat dan die Rechte des Apache = WWWRUN.
So heißt der Standarduser des Apache.
Wie die Massenprovider das nun regeln, dass jeder teilnehmer seinen eigenen Apache-Deamon bekommt, weiß ich leider auch noch nicht.
Du solltet aber Fehlermeldungen benutzen, um die Lösung zu finden. Das Ergebnis eines mkdir() ins Nirvana zu schicken, wird dir da nicht helfen.
mkdir() liefert true und false zurück. Eine Fehlermeldung steht in $PHP_ERRORMSG. Die solltest Du abfragen, wenn false rauskommt. Die Fehlermeldung wird aber sofort gegen eine neue ausgetauscht, wenn der nächste Fehler auftritt. Also sollte die Abfrageroutine _fehlerfrei_ sein.
Die Rechte 0777 sind sehr waghalsig. Eigentlich muss doch nur der Apache zugreifen können. 700 wäre also ausreichend, wenn der Apache der Eigentümer wäre. Oder 070, wenn der Apache zur Gruppe der Datei gehört...
Diese 777-mentalität werde ich hier bestimmt noch öfter aufs Korn nehmen :-))
Grüße
Tom
vielen Dank Tom,
selbst wenn 700 ausreichen sollte (und sogar 600, wenn ich mich nicht irre); wenn etwas nicht funktioniert, werden erst mal alle Rechte auf 777 hochgeschraubt :) Es koennte ja sein...
Leider hat mein Provider die Option track_errors deaktiviert.
Auf dem Bilschirm wird leider nur folgendes ausgegeben:
Warning: MkDir failed (Permission denied) in /home/sites/site46/web/rubriques/acces_annonceurs/ajout_hotel_resto.php on line 124
gruss,
Andreas.
Hallo Andreas,
wenn Du mit Hilfe von PHP und der Funktion mkdir() ein Verzeichnis anlegst, haben die rechte nix mit denen des Skripts zu tun, aus dem heraus das gemacht wird.
Wesentlich sind die Rechte des PHP-Parsers, der ja meistens als Modul des Apache läuft. Der hat dan die Rechte des Apache = WWWRUN.
So heißt der Standarduser des Apache.
Wie die Massenprovider das nun regeln, dass jeder teilnehmer seinen eigenen Apache-Deamon bekommt, weiß ich leider auch noch nicht.
Du solltet aber Fehlermeldungen benutzen, um die Lösung zu finden. Das Ergebnis eines mkdir() ins Nirvana zu schicken, wird dir da nicht helfen.
mkdir() liefert true und false zurück. Eine Fehlermeldung steht in $PHP_ERRORMSG. Die solltest Du abfragen, wenn false rauskommt. Die Fehlermeldung wird aber sofort gegen eine neue ausgetauscht, wenn der nächste Fehler auftritt. Also sollte die Abfrageroutine _fehlerfrei_ sein.
Die Rechte 0777 sind sehr waghalsig. Eigentlich muss doch nur der Apache zugreifen können. 700 wäre also ausreichend, wenn der Apache der Eigentümer wäre. Oder 070, wenn der Apache zur Gruppe der Datei gehört...
Diese 777-mentalität werde ich hier bestimmt noch öfter aufs Korn nehmen :-))
Grüße
Tom
Hi Andreas,
selbst wenn 700 ausreichen sollte (und sogar 600, wenn ich mich nicht irre); wenn etwas nicht funktioniert, werden erst mal alle Rechte auf 777 hochgeschraubt :) Es koennte ja sein...
Wenn die Rechte für 700 nicht ausreichen, dann vielleicht für 060 ? Ist ja gar nicht klar, was der Provider da im Hintergrund für Überwachungsmechanismen auf Betriebssystemeben aktiviert hat.
Leider hat mein Provider die Option track_errors deaktiviert.
Auf dem Bilschirm wird leider nur folgendes ausgegeben:
Das ist ja traurig
Warning: MkDir failed (Permission denied) in /home/sites/site46/web/rubriques/acces_annonceurs/ajout_hotel_resto.php on line 124
musst Du vielleicht einen qualifizierten Pfad angeben? Du kannst ja nicht irgendwo auf der Platte "test" anlegen. Du solltest den Pfad mal Domain-relativ //blabla/test angeben.
Grüße
Tom
Hi Andreas,
selbst wenn 700 ausreichen sollte (und sogar 600, wenn ich mich nicht irre); wenn etwas nicht funktioniert, werden erst mal alle Rechte auf 777 hochgeschraubt :) Es koennte ja sein...
Wenn die Rechte für 700 nicht ausreichen, dann vielleicht für 060 ? Ist ja gar nicht klar, was der Provider da im Hintergrund für Überwachungsmechanismen auf Betriebssystemeben aktiviert hat.
Leider hat mein Provider die Option track_errors deaktiviert.
Auf dem Bilschirm wird leider nur folgendes ausgegeben:
Das ist ja traurig
Warning: MkDir failed (Permission denied) in /home/sites/site46/web/rubriques/acces_annonceurs/ajout_hotel_resto.php on line 124
musst Du vielleicht einen qualifizierten Pfad angeben? Du kannst ja nicht irgendwo auf der Platte "test" anlegen. Du solltest den Pfad mal Domain-relativ //blabla/test angeben.
in meinen Testdateien werden die Verzeichnisse - wie von mir erwartet - im gleichen Pfad angelegt, in dem sich die php-Datei befindet. Das sollte doch ausreichend sein, oder?
Grüße
Tom
Hi Andreas,
selbst wenn 700 ausreichen sollte (und sogar 600, wenn ich mich nicht irre); wenn etwas nicht funktioniert, werden erst mal alle Rechte auf 777 hochgeschraubt :) Es koennte ja sein...
Wenn die Rechte für 700 nicht ausreichen, dann vielleicht für 060 ? Ist ja gar nicht klar, was der Provider da im Hintergrund für Überwachungsmechanismen auf Betriebssystemeben aktiviert hat.
Leider hat mein Provider die Option track_errors deaktiviert.
Auf dem Bilschirm wird leider nur folgendes ausgegeben:
Das ist ja traurig
Warning: MkDir failed (Permission denied) in /home/sites/site46/web/rubriques/acces_annonceurs/ajout_hotel_resto.php on line 124
musst Du vielleicht einen qualifizierten Pfad angeben? Du kannst ja nicht irgendwo auf der Platte "test" anlegen. Du solltest den Pfad mal Domain-relativ //blabla/test angeben.
in meinen Testdateien werden die Verzeichnisse - wie von mir erwartet - im gleichen Pfad angelegt, in dem sich die php-Datei befindet. Das sollte doch ausreichend sein, oder?
Weiß ich nicht, ich habs nicht ausprobiert, ob das IMMER so funktioniert. Nur Versuch macht kluch
Grüße
Tom
Noch was...
welche Rechte hast Du denn auf das Verzeichnis, in dem das Script steht?
Und welche Rechte hat der wwwrun auf das Verzeichnis?
Vielleicht solltest du dem Deamon einfach das browse (x) und das write (w) Recht geben, oder?
Wie heißt denn dein Deamon?
Zur Not musst du dann eben others auch alle Rechte auf das übergeordnete Verzeichnis geben.
Un wenn ich recht infoermiert bin, muss das x-recht dann für alle darüberliegenden Verzeichnisse für den Deamon vorhanden sein!
Grüße aus Braunschweig
Tom