我的某个php应用程序确实存在问题。首先,我的测试环境在安装了PHP的IIS上运行。我有以下代码:
<?php
// define autoloader for all php classes
$ps = PATH_SEPARATOR; // add default path seperator to a variable
set_include_path(get_include_path().$ps."classes/adapter/".$ps."classes/common/".$ps."classes/manager/".$ps."classes/mapper/".$ps."classes/object/".$ps."classes/viewobject/"); // add classes directory to include paths
spl_autoload_extensions(".class.php"); // add .class.php as extension for autoloading classes
spl_autoload_register(); //start the autoloading procedure
?>
到目前为止一切顺利,因为这是应该的。现在我想将该页面移动到使用Apache和PHP的提供程序,我看到的是以下错误消息:
Fatal error: spl_autoload() [<a href='function.spl-autoload'>function.spl-autoload</a>]: Class pageLoader could not be loaded
你们可能知道我做错了什么吗?
非常感谢你的帮助。
答案 0 :(得分:1)
看起来我发现了这个问题..我知道linux是区分大小写的,但无论出于什么原因,类的文件名必须是小写字母。
在我的例子中,如果你打电话
$test = new pageLoader();
目录中的文件需要名称为“pageloader.class.php”
干杯
答案 1 :(得分:0)
您是否忘记定义加载程序功能?
// Autoloader for Classes
spl_autoload_register(null, false); // Nullify any existing autoloads
spl_autoload_extensions('.php, .class.php'); // Specify extensions that may be loaded
function class_loader($class) // Class loader
{
$filename = strtolower($class) .'.class.php';
$file = ROOT .'/classes/'. $filename;
if(!is_readable($file))
return false;
require_once $file;
}
spl_autoload_register('class_loader'); // Register loader function(s)
// End Autoloader
请注意,上面的代码假定已定义的常量ROOT