J'ai rencontré quelques cas avec des installations WordPress avec Bluehost où j'ai rencontré des erreurs avec mon thème WordPress parce que le dossier de téléchargement wp-content/uploads
n'était pas présent.
Apparemment, le programme d' installation de Bluehost cPanel WordPress ne crée pas ce dossier, bien que contrairement à HostGator .
J'ai donc besoin d'ajouter du code à mon thème qui vérifie le dossier et le crée autrement.
if (!file_exists('path/to/directory')) { mkdir('path/to/directory', 0777, true); }
Réponses:
Essayez ceci, en utilisant mkdir :
Notez que
0777
c'est déjà le mode par défaut pour les répertoires et peut encore être modifié par l'umask actuel.la source
file_exists
- Vérifie si un fichier ou un répertoire existeis_file
- Dit si le nom de fichier est un fichier normalis_dir
- Dit si le nom de fichier est un répertoireVoici la pièce manquante. Vous devez passer l'indicateur 'récursif' comme troisième argument (booléen true) dans l' appel mkdir comme ceci:
la source
true
Quelque chose d'un peu plus universel puisque cela arrive sur google. Bien que les détails soient plus précis, le titre de cette question est plus universel.
Cela prendra un chemin, éventuellement avec une longue chaîne de répertoires non créés, et continuera à remonter d'un répertoire jusqu'à ce qu'il atteigne un répertoire existant. Ensuite, il tentera de créer le répertoire suivant dans ce répertoire et continuera jusqu'à ce qu'il ait créé tous les répertoires. Il retourne vrai en cas de succès.
Pourrait être amélioré en fournissant un niveau d'arrêt afin qu'il échoue simplement s'il dépasse le dossier utilisateur ou quelque chose et en incluant des autorisations.
la source
Qu'en est-il d'une fonction d'aide comme celle-ci:
Il retournera
true
si le répertoire a été créé avec succès ou existe déjà, etfalse
si le répertoire n'a pas pu être créé.Une meilleure alternative est la suivante (ne devrait donner aucun avertissement):
la source
@
et remplacez-le par uneis_dir
vérification appropriée , mon vote positif est le vôtre :) Points bonus pour vérifier si le répertoire parentis_writable()
pour une fonction d'aide étanche.Un moyen plus rapide de créer un dossier:
la source
Créez récursivement le chemin du répertoire:
Inspiré par Python
os.makedirs()
la source
Dans WordPress, il y a aussi la fonction très pratique wp_mkdir_p qui créera récursivement une structure de répertoire.
Source de référence: -
la source
J'ai besoin de la même chose pour un site de connexion. J'avais besoin de créer un répertoire avec deux variables. Le répertoire $ est le dossier principal où je voulais créer un autre sous-dossier avec le numéro de licence utilisateur.
la source
Il s'agit de la solution la plus récente sans suppression d'erreur:
la source
Si vous voulez éviter le problème
file_exists
VSis_dir
, je vous suggère de regarder iciJ'ai essayé ceci et il crée seulement le répertoire si le répertoire n'existe pas . Il s'en fiche qu'il y ait un fichier avec ce nom.
la source
la source
Vous pouvez également essayer:
la source
Pour créer un dossier s'il n'existe pas déjà
Compte tenu de l'environnement de la question.
Et en citant: http://php.net/manual/en/function.mkdir.php
Le manuel indique que le seul paramètre requis est le
$pathname
!donc, nous pouvons simplement coder:
Explication:
Nous n'avons pas besoin de passer de paramètre ou de vérifier si le dossier existe ou même de passer le paramètre de mode sauf si nécessaire; Pour les raisons suivantes:
mode
est ignoré sur l' hébergement Windows exécutant PHP .mkdir
commande a construit dans le vérificateur si le dossier existe; nous devons donc vérifier le retour uniquement True | False; et ce n'est pas une erreur, c'est un avertissement uniquement, et l'avertissement est désactivé par défaut dans les serveurs d'hébergement.C'est juste une autre façon d'examiner la question et de ne pas prétendre à une solution meilleure ou la plus optimale.
Testé sur PHP7, Production Server, Linux
la source
la source
Nous devons toujours modulariser notre code et j'ai écrit la même vérification ci-dessous ... Nous vérifions d'abord le répertoire, si le répertoire est absent, nous créons le répertoire.
la source
Vous devez d'abord vérifier si le répertoire existe
file_exists('path_to_directory')
Ensuite, utilisez
mkdir(path_to_directory)
pour créer un répertoireEn savoir plus sur mkdir () ici
Code complet ici:
la source
Voici.
la source
La réponse acceptée fonctionne mais ce n'est pas la bonne solution en raison des autorisations. Les autorisations 0777 permettent à chacun d'accéder / lire / écrire dans le répertoire. Ce n'est pas ce que nous voulons pour le téléchargement du répertoire sur le serveur Web. Voici la solution correcte et complète suggérée.
0644 sont les bonnes autorisations pour le répertoire de téléchargement car nous ne voulons généralement pas que le téléchargement sur le serveur y soit exécuté.
true est le troisième paramètre permettant de définir la propriété récursive sur true ou false. Il permet la création de répertoires imbriqués spécifiés dans le chemin d'accès.
la source