我正在尝试将'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);
}
}
}
您正尝试使用“/”打开该目录。
尝试替换:
C:\ XAMPP \ htdocs中/对象
至
C:\ XAMPP \ htdocs中\对象
请确保APP_PATH变量不为null且值正确。您的代码没有scandir函数用法。
之后,我建议你使用DirectoryIterator。
http://www.php.net/manual/en/class.directoryiterator.php
完整的例子:
我知道这是一个老问题,但对于任何未来的观众,我会发布一个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://localhost
或http://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');
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