2009-06-04 117 views
1

這是我的PHP代碼:爲什麼file_exists()不工作?

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

它說文件不存在,但實際上它的作用:

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

似乎是確實的報價問題:

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

現在通過使用以下轉換器來修復:

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

使它在bash中工作!

+0

[PHP的file_exists()的可能的重複將不適用於我?](http://stackoverflow.com/questions/1287837/phps-file-exists-will-not-work-for-me) – razlebe 2011-10-28 07:51:40

回答

3

嘗試刪除雙引號,因爲它已經用單引號括起來。

+0

我需要運行一個bash命令的exec(),任何一方都不能以這種方式工作。 – omg 2009-06-04 01:06:57

+0

在不同位置的不同文件上嘗試file_exists()以查看它是否有效。如果它確實有效,那麼你的問題是無法訪問。如果它不起作用,那麼問題就出在命令上,我們可以從那裏開始工作。讓我知道。 – 2009-06-04 01:13:13

0

查看file_exists的使用說明書。

注意本節:「此功能由於安全模式的限制返回FALSE的文件無法訪問然而,這些文件還可以包含,如果它們位於safe_mode_include_dir」

我的猜測是你使用的是< PHP 6.0.0,並且你有safe_mode(默認情況下,並且在大多數主機上)。如果是這種情況,除非它包含在safe_mode_include_dir中,否則不會找到該文件。