以下是我的localhost目录结构 -
htdocs目录\ SOFTWARE \ office_admin \ exam_excel \类\ PHPExcel.php
htdocs目录\ SOFTWARE \ office_admin \ exam_excel \类\ PHPExcel \ IOFactory.php
htdocs目录\ SOFTWARE \ office_admin \包括\类\ myownclassfiles.php
htdocs中\ SOFTWARE \ office_admin \包括\ example.inc.php
当我使用
在example.inc.php中使用IOFactory.php时require_once 'Classes/PHPExcel.php';<br>
require_once 'Classes/PHPExcel/IOFactory.php';
我收到的警告清单是2-3个样本 -
警告: include_once(包括/类/ class.PHPExcel_Shared_String.php): 无法打开流:没有这样的文件或目录 C:\ xampp \ htdocs \ manazeschool \ software \ office_admin \ index.php在线 26
警告:include_once():打开失败 'includes / classes / class.PHPExcel_Shared_String.php'包含在内 (include_path ='。; C:\ xampp \ php \ PEAR')in C:\ xampp \ htdocs \ manazeschool \ software \ office_admin \ index.php在线 26
警告: include_once(包括/类/ class.PHPExcel_Reader_Excel2007.php): 无法打开流:没有这样的文件或目录 C:\ xampp \ htdocs \ manazeschool \ software \ office_admin \ index.php在线 26
警告:include_once():打开失败 'includes / classes / class.PHPExcel_Reader_Excel2007.php'包含在内 (include_path ='。; C:\ xampp \ php \ PEAR')in C:\ xampp \ htdocs \ manazeschool \ software \ office_admin \ index.php在线 26
我自己的自定义类路径设置 -
if (!defined("INCLUDES_CLASS_PATH")) {
define("INCLUDES_CLASS_PATH", "includes/classes");
}
$path_arr = explode('/', $_SERVER['PHP_SELF']);
$cur_foldpath = count($path_arr)-3;
//This variable is for avoiding the unautherized page access
if (!defined('FROMINDEX')) {
define('FROMINDEX', true);
}
if (!defined('DS')) {
define('DS', '/');
}
include_once('includes/config.inc.php');
//class
function __autoload($class_name) {
include_once INCLUDES_CLASS_PATH . DS . "class." . $class_name . '.php';
}
include (INCLUDES_CLASS_PATH . DS .'developer.mysql.class.php');
include (INCLUDES_CLASS_PATH . DS . 'validation.class.php');
include (INCLUDES_CLASS_PATH . DS . 'html_form.class.php');
//files
include (INCLUDES_PATH . DS .'messages.inc.php');
include (INCLUDES_PATH . DS . 'functions.inc.php');
.....
}
我如何克服这些警告
答案 0 :(得分:0)
PHPExcel提供自己的SPL兼容自动加载器;使用spl_autoload_register()注册您自己的自动加载器,两者应该协同工作 - 有关详细信息,请参阅开发人员文档中标题为“Lazy Loader”的第3.2节
修改强>
如果您修改自己的自动加载器以在包含它之前测试是否存在类文件(使用file_exists())并且如果它不存在则返回false(如果它存在则仅返回包含它),那么它应该工作< / p>
function myAutoload($class_name) {
if (!file_exists(INCLUDES_CLASS_PATH . DS . "class." . $class_name . '.php')) {
return false;
}
include_once INCLUDES_CLASS_PATH . DS . "class." . $class_name . '.php';
}
spl_autoload_register('myAutoload');
然后确保您的Classes/PHPExcel/IOFactory.php
的include正在查找正确的目录以实际查找该文件。 PHPExcel IOFactory将使用SPL注册PHPExcel自动加载器。
当一个类被请求自动加载时,SPL应首先使用自动加载器处理检查,这将为PHPExcel类(以及任何其他无法找到的类)返回false
;那么SPL应该调用PHPExcel自动加载器,它将加载任何PHPExcel类。