我只是试图在PHP Fog上构建我的第一个应用程序,但有一段代码不能正常运行-尽管在本地主机和其他常规主机上运行良好。
我使用TinyMVC的一个修改版本,这是负责设置自动加载的代码:
/* Set include_path for spl_autoload */
set_include_path(get_include_path()
. PATH_SEPARATOR . FRAMEWORK_BASEDIR . 'core' . DS
. PATH_SEPARATOR . FRAMEWORK_BASEDIR . 'libraries' . DS
. PATH_SEPARATOR . FRAMEWORK_APPLICATION . DS . 'controllers' . DS
. PATH_SEPARATOR . FRAMEWORK_APPLICATION . DS . 'models' . DS
);
/* File extensions to include */
spl_autoload_extensions('.php,.inc');
/* Setup __autoload */
$spl_funcs = spl_autoload_functions();
if($spl_funcs === false)
spl_autoload_register();
elseif(!in_array('spl_autoload',$spl_funcs))
spl_autoload_register('spl_autoload');基本上,它会在加载的第一个类失败,这个类位于"FRAMEWORK_BASEDIR . 'core‘.ds“中。类文件名为"framework_controller.php“,类名为"Framework_Controller”(也尝试小写)。如果我手动包含类,它可以工作,但自动加载失败。
下面是我得到的错误消息:
Fatal error: spl_autoload(): Class Framework_Controller could not be loaded in /var/fog/apps/app7396/claudiu.phpfogapp.com/application/controllers/home.php on line 12 对于问题可能是什么,有什么想法吗?
发布于 2011-06-24 03:57:57
我设法解决了这个问题:
function framework_autoload($className, $extList='.inc,.php') {
$autoload_paths = array (
FRAMEWORK_BASEDIR . 'core' . DS,
FRAMEWORK_BASEDIR . 'libraries' . DS,
FRAMEWORK_APPLICATION . DS . 'controllers' . DS,
FRAMEWORK_APPLICATION . DS . 'models' . DS
);
$ext = explode(',',$extList);
foreach($ext as $x) {
foreach ($autoload_paths as $v) {
$fname = $v . strtolower($className).$x;
if(@file_exists($fname)) {
require_once($fname);
return true;
}
}
}
return false;
}
spl_autoload_register('framework_autoload');感谢StackOverflow上的另一个问题:spl_autoload problem
https://stackoverflow.com/questions/6459690
复制相似问题