2010-11-30 6 views
2

Est-ce que quelqu'un a une idée de pourquoi ne fonctionne pas ce qui suit?php étrange fichier_exists bug

$file = 'images/thumbs/1%20-%20Copy.jpg'; 
if(!file_exists($file)){ 
die('NOT THERE'); 
} 

echo 'Yes its there.'; 

Le problème est avec les espaces. J'ai vérifié le fichier existe, dbl vérifié n triple vérifié im allant écrous. :(

Aide

+0

btw J'ai vérifié la sensibilité à la casse aswell – Val

+0

Il s'agit d'un chemin relatif, ce qui signifie qu'il est résolu par rapport au répertoire de travail courant ('getcwd()'). Avez-vous vérifié le chemin absolu aussi ('realpath()')? – KingCrunch

Répondre

6

file_exists fonctionne sur le système de fichiers et non via HTTP donc %20 ne sera pas reconnu comme un espace, mais littéralement %20, utilisez des espaces à la place.

$file = 'images/thumbs/1 - Copy.jpg'; 
+0

... et par souci d'exhaustivité: l'URL d'un fichier avec le nom «% 20» sur son nom devrait être 'images% 2Fthumbs% 2F1% 2520-% 2520Copy.jpg' ;-) –

+1

@ Álvaro G. Vicario : Ce serait plutôt 'images/thumbs/1% 2520-% 2520Copy.jpg'. – Gumbo

+0

Oui, désolé, j'ai codé par inadvertance les barres obliques <:-) –

0
$file = rawurldecode('images/thumbs/1%20-%20Copy.jpg'); 
1

essayer ces deux

$file = 'images/thumbs/1\ -\ Copy.jpg'; 
$file = 'images/thumbs/1 - Copy.jpg';