file_exists()找不到该文件

时间:2010-11-12 21:41:10

标签: php relative-path file-exists

if(file_exists("./squadra/photos/photog.jpg")) {
    echo "### YES ###";
} else {
    echo "### NO ###";
}

如果我在/zones/team.php上运行此函数它可以工作(它打印是)。如果我在/auth/ajax.php上运行此函数,则打印NO。为什么呢?

修改

所以我做了一些实验。

1 - 如果我尝试:

// file on /zones/team.php
if(file_exists($_SERVER['DOCUMENT_ROOT']."/squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}

// file on /auth/ajax.php
if(file_exists($_SERVER['DOCUMENT_ROOT']."/squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}    

它在两者上都没有;

2 - 如果我尝试:

// file on /zones/team.php
if(file_exists("./squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}


// file on /auth/ajax.php
if(file_exists("../squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}

两者都说是;但是在team.php上我使用./和ajax.php ../ ...为什么这个工作???

7 个答案:

答案 0 :(得分:3)

你的最后一个很可能是因为:

  1. 您正在来自zones/team.php的{​​{1}}来自根目录。在这种情况下,index.php部分正确识别您当前的目录。
  2. 对于ajax,你必须像./那样直接调用它,而不是像auth/ajax.php那样与No.1相同的东西。因此情况并非如此,您需要先使用index.php?type=jx&do=auth/ajax退出auth,然后继续使用../
  3. 尽可能多地使用绝对路径。相对路径是PHP计算它们的难点(在性能方面)。

答案 1 :(得分:2)

确保您正在考虑键入的文件夹。使用/ 服务器端 root启动文件地址。如果您想要本地目录,请删除前面的/或键入整个路径。

其次要确保没有拼写错误。

祝你好运!

答案 2 :(得分:2)

当你得到正斜杠时,file_exist将转到硬盘的根目录。

在它前面使用$ _SERVER ['DOCUMENT_ROOT']或删除斜杠并使用../等等。

答案 3 :(得分:1)

如果squadra是运行PHP脚本的目录下的目录,请尝试

if(file_exists('./squadra/photos/photog.jpg')) {
    echo "### YES ###";
} else {
    echo "### NO ###";
} 

答案 4 :(得分:1)

检查php safe_mode状态, 并检查文件路径的区分大小写。

php file_exists

  

警告:   对于因安全模式限制而无法访问的文件,此函数返回FALSE。但是,如果这些文件位于safe_mode_include_dir中,则仍可以包含这些文件。

答案 5 :(得分:0)

如果你使用file_exists的相对路径,它将返回false,除非该路径是相对于php目录的。

答案 6 :(得分:0)

再次检查路径 - 我认为前导斜杠是一个错误 - 因为它可能指向根(服务器或更可能的用户空间) - 而执行脚本可能位于子路径中。

TL;博士;尝试删除第一个“/”