2010-08-28 5 views
3

Ma structure de répertoire en cours est comme suit:PHP - pourquoi is_dir renvoie TRUE quand un répertoire n'existe pas?

C:\xampp\htdocs\PHP_Upload_Image_MKDIR 

En d'autres termes, les répertoires suivants n'existent pas du tout.

C:\xampp\htdocs\PHP_Upload_Image_MKDIR\uploaded 
C:\xampp\htdocs\PHP_Upload_Image_MKDIR\uploaded\s002 

Le problème est que lorsque j'exécute le script suivant, la fonction is_dir retourne toujours TRUE.

Basé sur le manuel, http://us2.php.net/manual/en/function.is-dir.php is_dir: Retourne TRUE si le nom de fichier existe et est un répertoire, sinon FALSE.

Quelque chose me manque ici?

Merci

$userID = 's002'; 
$uploadFolder = '/PHP_Upload_Image_MKDIR/uploaded/'; 
$userDir = $uploadFolder . $userID; 
echo '<br/>$userDir: ' . $userDir . '<br/>'; 

if (is_dir ($userDir)) 
{ 
    echo "dir exists"; // always hit here!!! 
} 
else 
{ 
    echo "dir doesn't exist"; 
} 

mkdir($userDir, 0700); 
C:\xampp\htdocs\PHP_Upload_Image_MKDIR>dir /ah 
Volume in drive C is System 
Volume Serial Number is 30B8-2BB2 

Directory of C:\xampp\htdocs\PHP_Upload_Image_MKDIR 

File Not Found 

C:\xampp\htdocs\PHP_Upload_Image_MKDIR> 


////////////////////////////////////////////////////////// 

Basé sur les commentaires de Artefacto:

Here is the output of C:\PHP_Upload_Image_MKDIR\uploaded\s005 
echo '<br/>' . realpath($userDir) . '<br/>'; 

Merci pour les solutions.

Meilleurs voeux

+1

Êtes-vous positif que ces répertoires n'existent pas (par exemple: ils pourraient être cachés) – NullUserException

+1

ya, assurez-vous que le répertoire est pas là ... le code fonctionne très bien avec moi – Aziz

+1

voir ce qui est le résultat de 'realpath ($ userDir) ' – Artefacto

Répondre

1

, il semble également que si le répertoire que vous vérifiez est PHP_Uploaded_Image_MKDIR/uploaded/s002, qui est un chemin absolu à partir du système de fichiers racine. Essayez d'ajouter C:\xampp\htdocs\ à cela et voyez si cela fonctionne alors. Vérifiez également si le dossier existe à la racine du volume.

1

Si vous avez exécuté ce script plus d'une fois, puis is_dir($userDir) retournera true à cause de cette ligne (la dernière) dans votre script:

mkdir($userDir, 0700); 

Vous pouvez utiliser rmdir() ou une autre méthode pour le supprimer.

Pour tester is_dir(), essayez un nom de répertoire qui n'a jamais été utilisé/créé. Quelque chose comme ce qui suit devrait retourner faux, quand il le fait, vous savez que is_dir() œuvres:

if (is_dir ("/PHP_Upload_Image_MKDIR/uploaded/lkjlkjlkjkl")) 
Questions connexes