2009-06-04 20 views
1

Hier ist meine PHP-Code:Warum funktioniert file_exists() nicht?

[[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) 

die sagt die Datei nicht existiert, aber in Wirklichkeit tut es:

[[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]# 

scheint es in der Tat Zitat Ausgabe:

<?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]# 

jetzt mit folgendem Konverter behoben:

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

, damit es in bash funktioniert!

+0

möglich duplikate von [PHP file_exists() wird nicht funktionieren für mich?] (Http://stackoverflow.com/questions/1287837/phps-file-exists-will-not-work-for-me) – razlebe

Antwort

3

Versuchen Sie, die doppelten Anführungszeichen zu entfernen, da sie bereits in einfachen Anführungszeichen stehen.

+0

Ich brauche Zum Ausführen von exec(), das einen bash-Befehl ausführt, funktioniert jede Seite nicht auf diese Weise. – omg

+0

Versuchen Sie file_exists() in einer anderen Datei an einem anderen Ort, um zu sehen, ob es funktioniert. Wenn es funktioniert, liegt Ihr Problem in der Unzugänglichkeit. Wenn es nicht funktioniert, ist das Problem mit dem Befehl, und wir können von dort aus arbeiten. Gib mir Bescheid. –

+0

Nein, es ist Zitat Problem, siehe mein Update. – omg

0

Überprüfen Sie das Handbuch für file_exists.

Hinweis: dieser Abschnitt: „. Diese Funktion ist für Dateien unzugänglich aufgrund des sicheren Modus Einschränkungen FALSCH gibt jedoch diese Dateien können noch aufgenommen werden, wenn sie in safe_mode_include_dir befinden“

Meine Vermutung ist, dass Sie < PHP 6.0.0 verwenden, und Sie haben safe_mode auf (es ist standardmäßig, und ist auf den meisten Hosts). Wenn dies der Fall ist, werden Sie die Datei nur finden, wenn sie in safe_mode_include_dir enthalten ist.

+0

scheint es nicht der Fall zu sein. – omg