【问题标题】:Check if files with absolute and relative path exists检查具有绝对和相对路径的文件是否存在
【发布时间】:2010-12-16 09:03:18
【问题描述】:

有没有办法检查文件(具有绝对或相对路径)是否存在?我正在使用 PHP。我找到了几种方法,但它们要么只接受绝对的,要么接受相对的,但不能同时接受。谢谢。

【问题讨论】:

  • 我忘了提及这样做的逻辑是什么,如果文档根目录中不存在文件,请从远程 url 检查替代品。我想我会试试 Rob 的回答。谢谢大家

标签: php path


【解决方案1】:

file_exists($file); 对相对路径和绝对路径都有效。

然而,更有用的是拥有绝对路径而不对其进行硬编码。最好的方法是使用dirname(__FILE__),它以ether UNIX 或Windows 格式获取当前文件的目录完整路径。然后我们可以使用realpath(),如果文件不存在,它会方便地返回 false。你所要做的就是从该文件的目录中指定一个相对路径并将它们放在一起:

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

【讨论】:

  • realpath() 返回规范路径,因此清除符号链接。有没有办法避免这种情况,并检查路径是绝对的,即使不是规范的?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    如果你想要一个同时采用相对路径和绝对路径的函数,这样的东西应该可以工作(未经测试):

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

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 2020-05-08
      • 2016-08-03
      • 1970-01-01
      • 2014-03-09
      • 2011-10-16
      • 1970-01-01
      • 2011-11-15
      • 2020-02-28
      相关资源
      最近更新 更多