我试图打开我的对象'中的文件。将目录放入数组,然后使用它们加载对象。但是,由于某种原因,我继续得到这个错误
警告: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);
}
}
}
答案 0 :(得分:0)
您正尝试使用“/".
打开该目录尝试替换:
C:\ XAMPP \ htdocs中/对象
到
C:\ XAMPP \ htdocs中\对象
请确保APP_PATH变量不为null且值正确。您的代码没有scandir函数用法。
之后,我建议你使用DirectoryIterator。
http://www.php.net/manual/en/class.directoryiterator.php
完整示例:
答案 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://localhost
或http://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']);
}