2009-08-24 14 views
1

Informations Environnement:
* Windows Vista
* PHP 5.2.9-2Impossible de créer un dossier avec mkdir

Je travaille sur un projet. Disons que c'est simplement "projet". Mes fichiers php destinés à l'interaction utilisateur sera trouvée à

projet/file.php

Maintenant, j'ai une base de données derrière cela et certaines cartes qui contiennent des classes et des fichiers de configuration en général. Il y a aussi une carte pour les utilisateurs, dans laquelle je stocke les images qu'ils pourraient télécharger. Par exemple:

projet/fichiers/Utilisateurs/0/profilePic.jpg

Le numéro correspond à la user_id dans la base de données.

Mon fichier register.php contient cette ligne de code:

mkdir('/files/Users/'.$id) 

La variable $id est le plus grand numéro d'identification dans la base de données, plus 1.

Mais cela ne fonctionnera pas. J'ai vérifié les dossiers, j'ai les autorisations de lecture et d'écriture (je suis administrateur sur ma machine).

Qu'est-ce que je fais mal?

Note: le droit de me dire qu'il y a une meilleure façon d'organiser ce réservé à ceux qui peuvent me donner une réponse utile. : P

Répondre

7

Que pensez-vous de cela?

mkdir('c:/files/Users/'.$id) 
+0

Eh bien, cela a fait l'affaire, mais la question demeure: pourquoi le code précédent ne fonctionnait pas? – KdgDev

+1

Hey, dans Windows vous devez spécifier la lettre de lecteur, le système ne fera aucune hypothèse. –

+1

tout à fait évident pourquoi cela n'a pas fonctionné, puisque le chemin "/ files/Users /" n'existe pas dans php + windows. Le slash de départ indique un chemin absolu, qui n'existe pas sur Windows. Si vous voulez le chemin relatif, il suffit de supprimer la première barre oblique. – Henri

2

Couple de possibilités:

  1. perdre la première/depuis qui donne un chemin absolu et que vous cherchez à faire un chemin relatif - donc mkdir ('fichiers/Utilisateurs /'.$ id)
  2. Est-ce que des fichiers/utilisateurs existent déjà (c.-à-d., y a-t-il déjà un utilisateur 0, un utilisateur 1, etc.)? Si ce n'est pas le cas, vous devrez les créer en premier ou faire mkdir ('files/Users /'.$ id, 077, true) pour créer récursivement les répertoires.
+0

'files/Users' existe déjà. Tous les utilisateurs existent déjà (en utilisant phpMyAdmin pour la gestion de base de données) – KdgDev

+0

chemin relatif par rapport à absolu, c'était tout. – KdgDev

1

Dans Windows, un chemin ne commence pas par '/' mais par une lettre de lecteur. Supprimez simplement la première barre oblique (ainsi/'files/users /' devient 'files/users /').

En outre, ce que Mark a dit.

0

PHP indique qu'il fait la meilleure tentative pour convertir le/entre les systèmes. en faisant:

mkdir('/files/users'); 

Confusion de PHP en pensant que c'était sur un système * NIX. En définissant la racine sur c :, il était maintenant capable d'analyser correctement le paramètre et d'en déduire qu'il s'agissait d'un système Windows

+0

Donc PHP ne tente pas de détecter le type de système sur lequel il s'exécute, mais essaie de deviner en fonction de l'argument que vous passez à mkdir? – Stewart

+0

une réponse simple est oui. Il sait déjà quel système d'exploitation il fonctionne depuis qu'il a été respecté au système. – MANCHUCK

Questions connexes