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

时间:2014-05-20 13:43:10

标签: php readdir opendir scandir

我试图打开我的对象'中的文件。将目录放入数组,然后使用它们加载对象。但是,由于某种原因,我继续得到这个错误

  

警告: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);
        }
    }
}

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我知道这是一个老问题但是对于任何未来的观众,我会发布一个anwser以防万一。 这种类型的错误通常来自简单的疏忽。在开发大多数应用程序时,开发人员通常会使用类似的路径 http://localhost/myAppHome  要么 http://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地址的主目录将成为服务器本身的指向根目录=> drive:/xampp/htdocs (for example)

基本上为避免此问题,您应该始终注意,在没有指向您应用的域名的情况下开发时,请不要询问“DOCUMENT_ROOT”。

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

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

如果您在reqular的基础上进行部署,并且您担心在取消之前忘记重新进行此更改,则可以在defing APP_PATH时始终插入IF,如:

if($_SERVER['SERVER_NAME']=='localhost'){
     define('APP_PATH', $_SERVER['DOCUMENT_ROOT'].'/myAppHome');
}else{
     define('APP_PATH', $_SERVER['DOCUMENT_ROOT']);
}

答案 2 :(得分:0)

APP_HOST = DIR文件夹;
APP_PATH = APP_PATH + DIR文件夹;
示例=" C:/xampp/htdocs" +" /parent/child/index.php"

if ($_SERVER['SERVER_NAME'] == "localhost") {

  define('APP_HOST', pathinfo($_SERVER['PHP_SELF'], PATHINFO_DIRNAME));
  define('APP_PATH', $_SERVER['DOCUMENT_ROOT'] . APP_HOST);

} else {

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

}