2009-06-04 13 views
1

Voici mon code PHP:Pourquoi file_exists() ne fonctionne-t-il pas?

[[email protected] htdocs]# vi test.php 
<?php 

var_dump(file_exists('/usr/local/apache2/resumes/28/"Chapel Hill"/franky_li/"CV.doc"')); 
?> 

"test.php" [New] 5L, 100C written 
[[email protected] htdocs]# php test.php 
bool(false) 

qui dit que le fichier n'existe pas, mais en fait, il fait:

[[email protected] htdocs]# ls -l /usr/local/apache2/resumes/28/"Chapel Hill"/franky_li/"CV.doc" 
-rw-r--r-- 1 daemon root 36864 Oct 17 2008 /usr/local/apache2/resumes/28/Chapel Hill/franky_li/CV.doc 
[[email protected] htdocs]# 

semble qu'il est en effet question de citation:

<?php 


var_dump(file_exists('/usr/local/apache2/resumes/28/Chapel Hill/franky_li/CV.doc')); 
?> 
~ 
~ 
"test.php" 5L, 96C written 
[[email protected] htdocs]# php test.php 
bool(true) 
[[email protected] htdocs]# 

Fixé maintenant en utilisant le convertisseur suivant:

preg_replace('/\/([^\/\s]+\s+[^\/]+)(?:\/|$)/','/"${1}"/',$file); 

pour le faire fonctionner dans bash!

+0

duplication possible de [PHP's file_exists() ne fonctionnera pas pour moi?] (Http://stackoverflow.com/questions/1287837/phps-file-exists-will-not-work-for-me) – razlebe

Répondre

3

Essayez de supprimer les guillemets, car il est déjà cité avec des guillemets simples.

+0

J'ai besoin pour exécuter exec(), qui exécute une commande bash, chaque côté ne fonctionnera pas de cette façon. – omg

+0

Essayez file_exists() sur un fichier différent dans un emplacement différent pour voir si cela fonctionne. Si cela fonctionne, votre problème est l'inaccessibilité. Si cela ne fonctionne pas, alors le problème est avec la commande, et nous pouvons y travailler à partir de là. Faites le moi savoir. –

+0

non, c'est un problème de cotation, voir ma mise à jour. – omg

0

Vérifiez le manuel pour file_exists.

Notez cette section: «Cette fonction retourne FALSE pour les fichiers inaccessibles en raison des restrictions du mode sans échec Cependant, ces fichiers peuvent encore être inclus si elles sont situées dans safe_mode_include_dir. »

Je suppose que vous utilisez < PHP 6.0.0, et vous avez safe_mode on (il est par défaut, et est sur la plupart des hôtes). Si tel est le cas, vous ne trouverez le fichier que s'il est inclus dans safe_mode_include_dir.

+0

semble que ce n'est pas le cas. – omg

Questions connexes