ライブ サーバーでスクリプトを実行しようとしていますが、ステージング中です。
ローカルではすべて問題ありません (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);
ここで何が欠けているかについてのアイデアはありますか?