我正在一個web項目上,我有一個名爲init.php的文件,它基本上初始化數據庫連接並加載所有使用spl_autoload_register.Its包含在類的開始頁。PHP:如何解決'不能重新聲明loadModule函數'
該文件通常工作正常,但當m包含此文件在子目錄頁中時發生錯誤。像這樣......
include'../includes/init.php';
我得到這個致命錯誤:不能重新聲明loadModue以前在線聲明....
文件內容如下:
<?php
ob_start();
$profile_time = array() ;
$profile_time['start_time'] = microtime(TRUE) ;
include_once('settings.php') ;
//ini_set('display_errors', 'on');
//ini_set('error_reporting', E_ALL);
// set correct timezone
date_default_timezone_set('Asia/Calcutta');
// Set default encoding for multibyte strings
mb_language('uni');
mb_internal_encoding('UTF-8');
mb_http_input('UTF-8');
mb_http_output('UTF-8');
mb_regex_encoding('UTF-8');
function loadModule($className)
{
if(file_exists(APP_ROOT.'modules/'.$className.'.php'))
require_once(APP_ROOT.'modules/'.$className.'.php');
}
spl_autoload_register('loadModule');
$profile_time['before_sql_connection_time'] = microtime(TRUE) ;
$DB = mysqli_connect($db_data['host'] , $db_data['user'] , $db_data['pass'] , $db_data['db']);
Sql::init(array('db' => $DB));
$profile_time['after_sql_connection_time'] = microtime(TRUE) ;
@session_start();
if(User::isLoggedIn())
$_user = new User($_SESSION['user_id']);
else
$_user = new User(0);
if(isSet($_SESSION['user_id']))
$user_data = $_user->getDataArray();
ob_end_clean();
?>
的settings.php這個定義HOST,APP_ROOT等ñ DB數據....
我嘗試使用
if(!function_exists(loadModule)){
function loadModule(){.....}
}
而T3他正在給class Sql not found
致命錯誤...基本上沒有加載類。
我試着將函數的名字改爲loadModule_new
,但是給出了相同的錯誤cannot redeclare
。
我可以在StackOverflow上找到的所有情況都不是從開始工作,而是隻有在包含在子目錄中時纔會出現此問題。
對不起回覆延遲。 include_once也沒有工作......我也檢查了其他地方的loadModule定義...我認爲問題是與包含路徑...無論如何感謝您的幫助。 –
好的。檢查包含'init.php'文件的所有地方,並將它們中的所有**改爲include_once或require_once – DaveyBoy