警告:opendir():系统找不到指定的文件。 (代码:2)

问题描述 投票:-1回答:3

我正在尝试将'objects'目录中的文件转换为数组,然后使用它们加载对象。但是,由于某种原因,我继续得到这个错误

警告:opendir(C:\ xampp \ htdocs / objects,C:\ xampp \ htdocs / objects):系统找不到指定的文件。 (代码:2)

这是代码:

public function loadObjects(){
    $files = array();
    if ($handle = opendir(APP_PATH . 'objects')) 
    {
        while (false !== ($entry = readdir($handle))) 
        {
            if ($entry != "." && $entry != "..") 
            {
                $files[] = $entry;
            }
        }
    }

    closedir($handle);
    if(is_array($files) && count($files) > 0)
    {
        foreach($files as $value)
        {
            require_once(APP_PATH . 'objects/' . $value);
            $value = stristr($value, '.', true);
            self::$objects[$value] = new $object(self::$instance);
        }
    }
}
php readdir opendir scandir
3个回答
0
投票

您正尝试使用“/”打开该目录。

尝试替换:

C:\ XAMPP \ htdocs中/对象

C:\ XAMPP \ htdocs中\对象


请确保APP_PATH变量不为null且值正确。您的代码没有scandir函数用法。

之后,我建议你使用DirectoryIterator。

http://www.php.net/manual/en/class.directoryiterator.php

完整的例子:

http://fabien.potencier.org/article/43/find-your-files


0
投票

我知道这是一个老问题,但对于任何未来的观众,我会发布一个anwser以防万一。这种类型的错误通常来自简单的疏忽。在开发大多数应用程序时,开发人员通常使用像http://localhost/myAppHomehttp://96.82.102.233/myAppHome(if on remote server)这样的路径

在这种特殊情况下,APP_PATH可能是这样定义的:

define('APP_PATH',$_SERVER['DOCUMENT_ROOT']);

在域名之外开发应用程序时,这种情况都是错误的。

$_SERVER['DOCUMENT_ROOT']将解析域的根源,在这种情况下将是

http://localhosthttp://96.82.102.233

localhost的主目录或IP地址将成为服务器本身的目录根目录=> qazxsw poi

基本上为了避免这个问题,你应该始终注意不要在没有指向你app的域的情况下开发时请求'DOCUMENT_ROOT'。

如果您不需要常规部署,则可以将缺少的文件夹添加到定义中,如下所示:

drive:/xampp/htdocs (for example)

如果您定期部署并且您害怕在部署之前忘记重置此更改,则可以在defing APP_PATH时始终插入IF,如:

define('APP_PATH',$_SERVER['DOCUMENT_ROOT'].'/myAppHome');

0
投票

APP_HOST = DIR文件夹; APP_PATH = APP_PATH + DIR文件夹; 示例=“if($_SERVER['SERVER_NAME']=='localhost'){ define('APP_PATH', $_SERVER['DOCUMENT_ROOT'].'/myAppHome'); }else{ define('APP_PATH', $_SERVER['DOCUMENT_ROOT']); } ”+“C:/xampp/htdocs

/parent/child/index.php
© www.soinside.com 2019 - 2024. All rights reserved.