mkdir() nicht funktioniert
Mein code
mkdir("/some/absolute/path",0777);
und
mkdir("relative/path", 0777);
nicht funktioniert, safe mode ist ausgeschaltet, und ich habe sogar versucht die Einstellung der übergeordneten Ordner auf 777.
Irgendwelche Ideen?
EDIT: ich habe die Fehlerberichterstattung aktiviert ist, in meinem Frust habe ich 777 würde dem ganzen Weg, nur um sicherzustellen, dass, dass ist nicht das Problem. Es muss doch etwas blöd einfach Los.
EDIT EDIT: Upvotes für alle, die reagierten mit Kommentaren... Aber ich werde mich nicht um eine Antwort auswählen, da dieser noch nicht behoben ist, aber dann wieder ich denke, das wird einer dieser Links öffnen sich immer.
BEARBEITEN x 3: Also ich habe die unbefriedigende Auflösung zu dieser Frage überhaupt... ich begann mit einer sauberen VM-image, wiederholt es und es funktioniert jetzt. Kein Witz.
- Welche Fehler gilt es zurückzukehren?
- Keine, es geht nur durch macht es die Sache und nicht spuckt keine Fehler. Ich habe sogar versucht, um zu sehen, wenn es irgendwie versehentlich platzieren Sie die neue Verzeichnis woanders, und ich konnte finden, wenn überall.
- Ein paar Dinge: Macht der Prozess Sie diesen code ausführen über die Berechtigung zum schreiben in das übergeordnete Verzeichnis? Wenn Sie diese über einen web-server, haben Sie überprüft die Protokolle nach Fehlermeldungen?
- also, Sie haben zu drehen, Fehler-reporting auf
- Schrapnell: Ah, ja, das ist wahr, ich hatte angenommen, das sei der Fall, aber wir wissen, was passiert, wenn Annahmen zu machen. Danke für den Hinweis!
- Haha ja error reporting auf, aber es ist nicht spucken keine Fehler aus, ich habe sogar versucht, mit diesem code stackoverflow.com/questions/927564/... Und es kommt nicht zurück mit Fehlern, der ganze Weg ist 777 von /var www, um das Projekt-Verzeichnis. Es macht mich ziehe meine Haare aus. Es muss doch etwas blöd einfach.
- Ich bezweifle, Sie haben Ihre Fehler-reporting wirklich auf.
- Ich habe meistens die Ideen hier, außer zu suggerieren, Sie laufen mit der command line PHP-wenn möglich (und du es nicht schon getan), um zu sehen, ob das ausspucken einer Fehlermeldung. Wenn Ihre vorhandene Skript nicht funktionieren ohne die web-server, erstellen Sie einfach ein kurzes Skript wie: <?php $retVal = mkdir("/some/absolute/path"); echo "\$retval = '" . $retVal . "'\n"; ?>
- Neben error_reporting, ist "display_errors" auch auf 1 gesetzt ? Dies ist eine Sache, die ich immer wieder gerne vergessen, und wenn dies nicht helfen und es wird kein Fehler angezeigt, auch ich lief aus Ideen.
- Dies ist der code, den ich in der Regel verwenden, um Fehler anzuzeigen, die während der Prüfung... ini_set('display_errors',1); error_reporting(E_ALL|E_STRICT); Aber wie ich schon sagte, ich habe versucht, die anderen code, den ich gefunden hier, also ich weiß nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fehlenden Anführungszeichen um den Pfad-name-parameter.
Müssen alle übergeordneten Verzeichnisse existieren?
Wenn nicht, werden Sie brauchen, um eine Rekursion zu ermöglichen (vorausgesetzt, PHP5 hier):
EDIT: nicht sehen die versteckte Kommentar sagen, dass jedes Verzeichnis aus
var
nach unten gesetzt wurde, um die Welt-schreibbar, so bin ich Wetten, dass der Verzeichnispfad besteht und das oben nicht hilfreich sein. Sorry!Sind Sie versuchen, erstellen Sie die Verzeichnisse rekursiv, wie würden Sie mit
mkdir -p
auf der Kommandozeile? Wenn ja, geben Sietrue
als Dritter parameter anmkdir
.Und nur das echo der früheren Vorschläge, geben Sie BITTE die Fehlermeldungen, die Sie bekommen. Wenn Sie nicht bekommen, verwenden Sie diese vor Ihrem Anruf:
error_reporting(-1); //ALL messages
undini_set('display_errors', 'On');
.E_XXX
Konstante, die nicht inE_ALL
,-1
wird es sowieso. Hängt davon ab, was Sie bevorzugen, im Grunde.Haben Sie versucht, mit den kürzesten test möglich?
mkdir('Ordner',0777);
Wenn das nicht funktioniert, würde ich versuchen, erstellen Sie mit einem standard-CHMOD wie 0755 (dies ist eine völlig zufällige erraten, vielleicht ist der server nicht erlauben das erstellen von 0777 per PHP)
wenn dies nicht funktionieren würde ich sagen, die server müssen wahrscheinlich verschiedene setup /php doesn' thave dem schreiben die Rechte auf die Ordner, vielleicht könnte Sie Fragen Sie Ihren Hosting-Anbieter?
Ich habe ähnliches problem und ich fand heraus, dass ich keine freien Speicherplatz Links auf meiner Festplatte. Überprüfen Sie mit dem Befehl
df
(unter linux) wie voll ist deine Festplatte. Es ist möglich, dass root darf Dateien und Ordner zu erstellen, in dieser situation, denn er hat pre-reservierten Platz. Wenn Sie führen Sie ein Skript von der Befehlszeile alsroot
Benutzer - es ist kein Fehler, aber wenn Ihr Skript ausgeführt wird, indemapache
, dann Fehler passieren.Wenn jemand stecken bleibt, dieses problem.. es ist eine Antwort, die ich Ihnen geben kann, die verbringe ich 2 Stunden auf der Suche nach.. ich habe versucht mit mit einem vollständigen Pfad, und "../mydirectoryname".
Versuchen Sie es mit:
Statt..
Für die Zukunft Verweise, wird das problem möglicherweise von der Möglichkeit, dass das Verzeichnis, in dem Sie versuchen, erstellen Sie das neue Verzeichnis nicht genügend Berechtigung.
Beispielsweise index-Verzeichnis könnte wie folgt Aussehen:
index.php new_dirs_here
wenn
new_dirs_here
nicht über ausreichend Berechtigung, dann können Sie nicht erstellen direcories innen.Um dieses Problem zu lösen, verwende ich den Befehl:
chmod 777 new_dirs_here
Bin ich nicht, sich Gedanken über die Sicherheit jetzt, Nur versuchen zu lösen das unmittelbare problem. Man könnte natürlich schauen, eine bessere Berechtigung Einstellungen, aber die Idee ist, dass Ihr
new_dirs_here
sollte über genügend Berechtigungen verfügen.Dann, Ihr
mkdir()
dunction sollte gut funktionieren.Glück
Müssen Sie das Attribut in Anführungszeichen:
$mode
parameter ist definiert als ein oktal int, so dass Sie sollte nicht setzen Sie Anführungszeichen um ihn herum.