Bei WordPress-Installationen mit Bluehost sind einige Fälle aufgetreten, in denen Fehler bei meinem WordPress- Design aufgetreten sind, weil der Upload-Ordner wp-content/uploads
nicht vorhanden war.
Anscheinend erstellt das Bluehost cPanel WordPress-Installationsprogramm diesen Ordner nicht, HostGator jedoch.
Daher muss ich meinem Design Code hinzufügen, der nach dem Ordner sucht und ihn anderweitig erstellt.
if (!file_exists('path/to/directory')) { mkdir('path/to/directory', 0777, true); }
Antworten:
Versuchen Sie dies mit mkdir :
Beachten Sie, dass dies
0777
bereits der Standardmodus für Verzeichnisse ist und möglicherweise noch von der aktuellen Umask geändert wird.quelle
file_exists
- Überprüft, ob eine Datei oder ein Verzeichnis vorhanden ist.is_file
- Gibt an, ob der Dateiname eine reguläre Dateiis_dir
ist.Hier ist das fehlende Stück. Sie müssen das 'rekursive' Flag als drittes Argument (boolean true) im mkdir- Aufruf wie folgt übergeben :
quelle
true
Etwas universelleres, da dies bei Google auftaucht. Während die Details spezifischer sind, ist der Titel dieser Frage universeller.
Dies nimmt einen Pfad, möglicherweise mit einer langen Kette nicht erstellter Verzeichnisse, und geht ein Verzeichnis hoch, bis es zu einem vorhandenen Verzeichnis gelangt. Anschließend wird versucht, das nächste Verzeichnis in diesem Verzeichnis zu erstellen, und es wird fortgefahren, bis alle Verzeichnisse erstellt wurden. Bei Erfolg wird true zurückgegeben.
Könnte verbessert werden, indem eine Stoppstufe bereitgestellt wird, die nur fehlschlägt, wenn sie über den Benutzerordner oder etwas anderes hinausgeht, und indem Berechtigungen eingeschlossen werden.
quelle
Was ist mit einer Hilfsfunktion wie dieser:
Es wird zurückgegeben,
true
wenn das Verzeichnis erfolgreich erstellt wurde oder bereits vorhanden ist undfalse
wenn das Verzeichnis nicht erstellt werden konnte.Eine bessere Alternative ist dies (sollte keine Warnungen geben):
quelle
@
und durch eine ordnungsgemäßeis_dir
Überprüfung ersetzen , liegt meine positive Bewertung bei Ihnen :) Bonuspunkte für die Überprüfung, ob das übergeordnete Verzeichnisis_writable()
für eine wasserdichte Hilfsfunktion funktioniert.Schnellere Möglichkeit, einen Ordner zu erstellen:
quelle
Verzeichnispfad rekursiv erstellen:
Inspiriert von Pythons
os.makedirs()
quelle
In WordPress gibt es auch die sehr praktische Funktion wp_mkdir_p, die rekursiv eine Verzeichnisstruktur erstellt.
Quelle als Referenz: -
quelle
Ich brauche das gleiche für eine Login-Site. Ich musste ein Verzeichnis mit zwei Variablen erstellen. Das Verzeichnis $ ist der Hauptordner, in dem ich einen weiteren Unterordner mit der Lizenznummer des Benutzers erstellen wollte.
quelle
Dies ist die aktuellste Lösung ohne Fehlerunterdrückung:
quelle
Wenn Sie das
file_exists
VS-is_dir
Problem vermeiden möchten , würde ich Ihnen empfehlen, hier nachzuschauenIch habe es versucht und es erstellt das Verzeichnis nur, wenn das Verzeichnis nicht existiert . Es ist egal, ob es eine Datei mit diesem Namen gibt.
quelle
quelle
Sie können auch versuchen:
quelle
So erstellen Sie einen Ordner, falls dieser noch nicht vorhanden ist
Berücksichtigung der Umgebung der Frage.
Und zitiert aus: http://php.net/manual/en/function.mkdir.php
Das Handbuch besagt, dass der einzige erforderliche Parameter der
$pathname
!Also können wir einfach codieren:
Erläuterung:
Wir müssen keine Parameter übergeben oder prüfen, ob ein Ordner vorhanden ist, oder sogar Parameter für den Modus übergeben, sofern dies nicht erforderlich ist. aus den folgenden Gründen:
mode
wird auf Windows Hosting mit PHP ignoriert .mkdir
Befehl verfügt bereits über eine integrierte Überprüfung, wenn ein Ordner vorhanden ist. Wir müssen also nur die Rückgabe überprüfen. True | False; und es ist kein Fehler, es ist nur eine Warnung und die Warnung ist auf Hosting-Servern standardmäßig deaktiviert.Dies ist nur eine andere Möglichkeit, die Frage zu untersuchen und keine bessere oder optimalste Lösung zu beanspruchen.
Getestet auf PHP7, Production Server, Linux
quelle
quelle
Wir sollten unseren Code immer modularisieren und ich habe das gleiche geschrieben. Überprüfen Sie es unten ... Wir überprüfen zuerst das Verzeichnis. Wenn das Verzeichnis nicht vorhanden ist, erstellen wir das Verzeichnis.
quelle
Sie müssen zuerst überprüfen, ob ein Verzeichnis vorhanden ist
file_exists('path_to_directory')
Verwenden Sie dann
mkdir(path_to_directory)
, um ein Verzeichnis zu erstellenMehr über mkdir () hier
Vollständiger Code hier:
quelle
Bitte schön.
quelle
Die akzeptierte Antwort funktioniert, ist jedoch aufgrund der Berechtigungen nicht die richtige Lösung. Mit 0777-Berechtigungen kann jeder auf das Verzeichnis zugreifen / es lesen / schreiben. Dies ist nicht das, was wir für das Upload-Verzeichnis auf dem Webserver wollen. Hier ist die richtige und vollständige Lösung vorgeschlagen.
0644 sind die richtigen Berechtigungen für das Upload-Verzeichnis, da wir normalerweise nicht möchten, dass das Hochladen auf den Server dort ausgeführt wird.
true ist der dritte Parameter zum Setzen der rekursiven Eigenschaft auf true oder false. Es ermöglicht die Erstellung verschachtelter Verzeichnisse, die im Pfadnamen angegeben sind.
quelle