【发布时间】:2014-02-26 16:01:55
【问题描述】:
我在 localhost 上创建了一个网站模块,并试图让它在实时服务器上工作,这令人沮丧,因为我确信要加载的每个类都有正确的语法。即使路径相同,它们也不会被加载。
function __autoload($class_name) {
require("adk3/classes/".$class_name.".php");
}
以上是在根文件夹(htdocs/index.php)执行的本地主机上工作的原始文件
function autoloader(){
require("adk3/classes/".$class_name.".php");
}
spl_autoload_register('autoloader',true);
这也是我也在尝试但也没有奏效的方法。我还检查了绝对路径:
require(dirname(__FILE__)."/adk3/classes/".$class_name.".php");
脚本在$userList = new UserList(); 处停止执行,即使E_ALL 已打开,也不会出现任何错误消息。使用 dirname 语法 file_exists() 表示是 - 它们存在。
编辑(附加信息):
-
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_STRICT | E_ALL);根本没有任何帮助。 - PHP 版本为 5.3.1。
<?php require("adk3/interfaces.php"); // okay require("adk3/classes/UserList.php"); //STOPS without error shown
【问题讨论】:
-
尝试使用
E_ALL | E_STRICT运行 -
尝试带参数运行:function autoloader($class_name){ require("adk3/classes/".$class_name.".php"); } spl_autoload_register('autoloader',true);
-
也将您的 dirname() 包装在 realpath() 中,如果无法解析路径,它将返回 false。回显文件名,包括您正在尝试的路径。如果您一无所获,则自动加载器没有运行。如果它返回文件的路径 OK,则自动加载器正在运行。将其包装在您的 realpath() 中,看看 PHP 是否可以看到该文件 :)
-
服务器的PHP版本是否支持
__autoload()?而且您没有在 CLI 交互模式下使用 PHP?display_errors已开启(由phpinfo()确认)? -
您确认您的自动加载功能正在运行吗?