我試圖在活動服務器上運行我的腳本,但它正在暫存。致命錯誤:未找到類,但已加載
在本地,一切都很好(OS X),遠程,CentOS/Nginx,我有一個致命的問題..腳本說我的自定義數據庫類無法找到。
看看什麼是加載,使用get_declared_classes()
,我可以看到我的自定義數據庫類,它正在調用它的腳本/類之前加載。
它正在通過我的自動加載磁帶機加載:
spl_autoload_register(function ($className) {
if (file_exists(ROOT . DS . 'library' . DS . 'intranet' .DS . 'classes' . DS .strtolower($className) . '.php')){
require_once(ROOT . DS . 'library' . DS . 'intranet' .DS . 'classes' . DS .strtolower($className) . '.php');
} else if (file_exists(ROOT . DS . 'application' . DS . 'controller' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'controller' . DS . strtolower($className) . '.php');
} else if (file_exists(ROOT . DS . 'application' . DS . 'model' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'model' . DS . strtolower($className) . '.php');
} else if (file_exists(ROOT . DS . 'application' . DS . 'view' . DS . strtolower($className) . '.php')) {
require_once(ROOT . DS . 'application' . DS . 'view' . DS . strtolower($className) . '.php');
} else {
throw new Exception("Class: $className not autoloaded!");
}
});
沒有異常被拋出。
Array ([128] => Router
[129] => debug
[130] => database
[131] => SessionManager
[132] => security
)
Fatal error: Class 'database' not found in
/home/nginx/domains/ckrisc/public/library/intranet/classes/sessionmanager.php
on line 76
自舉和文件包含如下:
require_once (ROOT . DS . 'config' . DS . 'config.php' );
require_once (ROOT . DS . 'config' . DS . 'directories.config.php' );
require_once (library . DS . 'setup.php' );
require_once (library . DS . 'Autoloader.php' );
require_once (library . DS . 'Router.php' );
require_once (library . DS . 'init.php' );
在這種情況下
,類database
正在從sessionmanager,這被稱爲在init.php
調用。
腳本失敗的位置:
$sessionId = database::getInstance()->real_escape_string($sessionId);
對我缺少的是什麼在這裏的任何想法?
就在異常之前調用'get_declared_classes()'。檢查回溯 –
@KarolyHorvath,我做了,它已被加載。 – bear
從字面上看是否在例外的上一行中? –