【问题标题】:How to check if a file exists under include path?如何检查包含路径下是否存在文件?
【发布时间】:2011-05-18 07:27:02
【问题描述】:

您可以使用get_include_path() 获取 PHP 中的当前包含路径

我想知道在不发出 PHP 错误的情况下检查文件是否可以包含的轻量级方法是什么。我正在使用 Yii 框架,我想在不发出 PHP 错误的情况下进行导入,但我失败了。

【问题讨论】:

    标签: php yii


    【解决方案1】:

    从 PHP 5.3.2 开始,您可以使用

    返回一个包含解析的绝对文件名的字符串,如果失败则返回 FALSE。

    手册示例:

     var_dump(stream_resolve_include_path("test.php"));
    

    上面的例子会输出类似于:

     string(22) "/var/www/html/test.php"
    

    【讨论】:

    • 对我尝试查找包含路径中实际存在的目录时不起作用。 real_path() 也没有。没有错误信息。
    • @DavidSpector ,你到底想做什么?此解决方案用于检查“包含路径下是否存在文件”,而不是查找目录。
    • 抱歉,“include_path”似乎是指目录,因为包含路径仅包含目录的路径,而不包含文件的路径。现在我查看了 stream_resolve_include_path 的文档,我看到它指的是测试文件。没关系。
    【解决方案2】:

    在 PHP 5.3.2 之前可以拆分路径并循环检查每个路径:

    $find = 'file.php'; //The file to find
    $paths = explode(PATH_SEPARATOR, get_include_path());
    $found = false;
    foreach($paths as $p) {
      $fullname = $p.DIRECTORY_SEPARATOR.$find;
      if(is_file($fullname)) {
        $found = $fullname;
        break;
      }
    }
    //$found now contains the file to be included, or false if not found
    

    【讨论】:

    • 戈登,谢谢,我在发布此内容后立即查找。在手册中不太容易找到。
    • 对于什么环境,DIRECTORY_SEPARATOR 与“/”有什么不同? (提示:为此,“/”在 Windows 下工作得很好。)
    猜你喜欢
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 2018-07-17
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多