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 ../ ...为什么这个工作???
答案 0 :(得分:3)
你的最后一个很可能是因为:
zones/team.php
的{{1}}来自根目录。在这种情况下,index.php
部分正确识别您当前的目录。./
那样直接调用它,而不是像auth/ajax.php
那样与No.1相同的东西。因此情况并非如此,您需要先使用index.php?type=jx&do=auth/ajax
退出auth
,然后继续使用../
。尽可能多地使用绝对路径。相对路径是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状态, 并检查文件路径的区分大小写。
警告: 对于因安全模式限制而无法访问的文件,此函数返回FALSE。但是,如果这些文件位于safe_mode_include_dir中,则仍可以包含这些文件。
答案 5 :(得分:0)
如果你使用file_exists的相对路径,它将返回false,除非该路径是相对于php目录的。
答案 6 :(得分:0)
再次检查路径 - 我认为前导斜杠是一个错误 - 因为它可能指向根(服务器或更可能的用户空间) - 而执行脚本可能位于子路径中。
TL;博士;尝试删除第一个“/”