2009-11-13 242 views
9

是否有方法检查文件(具有绝对路径还是相对路径)是否存在?我使用PHP。我发现了一些方法,但他们只接受绝对或相对的,但不是两者。谢谢。检查是否存在具有绝对路径和相对路径的文件

+0

我忘了说这是什么逻辑,如果一个文件不存在于从远程URL的文档根目录中替代。我想生病尝试罗布的答案。谢谢大家 – uji 2009-11-13 17:16:13

回答

25

file_exists($file);的伎俩适用于相对路径和绝对路径。

更有用的是,有绝对路径没有硬编码它。最好的方法是使用dirname(__FILE__),它以windows格式的ether unix获取当前文件的目录完整路径。然后,我们使用realpath(),如果文件不存在,则返回false。所有你需要做的就是指定从该文件的目录的相对路径,并把它放在一起:

$path = dirname(__FILE__) . '/include.php'; 
if (realpath($path)) { 
    include($path); 
} 
+0

realpath()返回规范路径,所以消除符号链接。有没有办法避免这一点,并检查路径是绝对的,即使不是规范? – Pierre 2011-10-26 12:46:37

+0

良好的教学技能 – unkown 2012-07-12 05:53:10

3

file_exists($path)将检查绝对路径或相对于脚本位置。如果您要检查相对于文档根目录,你可以尝试file_exists("{$_SERVER['DOCUMENT_ROOT']}path");

如果你想将采取相对和绝对路径,这样的事情应该工作(未经测试)功能:

function check_file($path) { 
    return (file_exists($path) || file_exists("{$_SERVER['DOCUMENT_ROOT']}path")); 
} 
4

您可以使用realpath来检查文件是否存在给定的路径检索扩展路径,文件:

$absPath = realpath($path); 
if ($absPath === false) { 
    // invalid path 
}