2012-07-25 7 views
0

Im assez sûr que je n'ai tout simplement pas la permission. Merci pour vos réponses de toute façon! Je vais passer à l'auto-hébergement, donc je sais que j'ai la permission!PHP - Créer un dossier dans le dossier

(je supprimerais cela, mais il me dit que je ne peux pas b/c il y a des réponses)

+3

peut-être le dossier existe déjà, vous voulez vérifier cela en premier? – Ibu

+0

ce n'est pas! Ive essayé avec diff noms d'utilisateur, et chaque fois qu'il n'existe pas – Primm

+0

On dirait que vous devriez ajouter une vérification autour du mkdir si le répertoire existe, ou peut-être supprimer les erreurs/avertissements – ernie

Répondre

0
Ce

est l'algorithme de ce genre de scénario.

  1. Vérifiez si le dossier existe.
  2. Si le dossier existe, nommez le dossier à autre chose ou ajoutez-lui un nombre aléatoire.
  3. Créez le nouveau dossier.

    http://pastebin.com/VefbrzRS

0

essayer.

mkdir ("./files/$username"); 
0

Ces fichiers ne sont-ils pas identiques? fichiers/Alex et fichiers/Alex/sont les mêmes. Voulez-vous dire fichiers/$ nom d'utilisateur et fichiers/$ nom d'utilisateur/fichiers? vous faites deux fois le même répertoire, c'est donc l'erreur

+0

Ce sont 2 choses différentes que j'ai essayé – Primm

+0

aller à la ligne de commande et faire des fichiers mkdir/test puis faire sans changer de répertoires font mkdir fichiers/test/vous aurez la même erreur –

0

Si vous êtes sous Linux ou MacOs, il y a aussi un autre scénario qui consisterait à appeler la fonction mkdir de votre shell.

Il va ressembler à:

system('mkdir -p yourdir/files/$username') 
1

Tout d'abord, quelle est la valeur réelle de $username? Avez-vous vérifié que ce n'est pas vide? Traiter le système de fichiers comme ceci peut entraîner plusieurs problèmes différents. J'aime mettre beaucoup de contrôles supplémentaires, donc si quelque chose échoue, j'ai plus de facilité à savoir pourquoi. J'aime aussi traiter les noms de répertoire absolus lorsque c'est possible, donc je ne rencontre pas de problèmes avec les chemins relatifs.

$filesDir = '/path/to/files'; 
if (!file_exists($filesDir) || !is_dir($filesDir)) { 
    throw new Exception("Files directory $filesDir does not exist or is not a directory"); 

} else if (!is_writable($filesDir)) { 
    throw new Exception("Files directory $filesDir is not writable"); 
} 

if (empty($username)) { 
    throw new Exception("Username is empty!"); 
} 

$userDir = $filesDir . '/' . $username; 

if (file_exists($userDir)) { 
    // $userDir should be all ready to go; nothing to do. 
    // You could put in checks here to make sure it's 
    // really a directory and it's writable, though. 

} else if (!mkdir($userDir)) { 
    throw new Exception("Creating user dir $userDir failed for unknown reasons."); 
} 

mkdir() a quelques options vraiment utiles pour définir des autorisations et de faire des dossiers multiples niveaux de profondeur. Découvrez PHP's mkdir page si vous ne l'avez pas encore. Par mesure de sécurité, assurez-vous que vos exceptions ne révèlent pas les chemins d'accès système à l'utilisateur final. Vous souhaiterez peut-être supprimer les chemins d'accès aux dossiers de vos messages d'erreur lorsque votre code va sur un serveur public. Ou configurez les choses pour que vos exceptions soient enregistrées mais pas affichées sur la page Web.

Questions connexes