我最近升級到PHP 5.3.8到5.3.20。一旦升級很到位,我開始收到大量不能重新聲明錯誤:從PHP 5.3.8升級到5.3.20後,開始接收無法重新聲明類錯誤
class foo {
function foo() {
global $db;
require '/var/www/htdocs/includes/mySQL.php';
$db = new mydb_driver();
}
function show_text() {
require '/var/www/htdocs/includes/mySQL.php';
$db2 = new mydb_driver();
}
}
:
[20-Dec-2012 11:15:00 America/New_York] PHP Fatal error: Cannot redeclare class user in /var/www/htdocs/includes/mysql.php on line 3
在我的PHP類之一,我使用類似的代碼實例化一個mysql類的構造函數在同一個類中,我創建了一個函數,它使用不同的變量實例化相同的mysql類,以便我可以連接到不同的數據庫。第二個要求是觸發錯誤的原因,我不確定原因。如果我從show_text中刪除require或將其更改爲require_once,它可以正常工作。
有誰知道這兩個版本之間會有什麼變化,會導致此代碼失敗?我甚至不確定如何在沒有require的情況下正確初始化$ db2。是否需要類構造函數使其在文件中全局可見?
編輯: 這不是日誌記錄問題,升級前沒有發生錯誤。這些應用程序工作正常,直到升級。這是我如何在我的錯誤啓用日誌記錄錯誤:
error_reporting = E_ALL & ~E_NOTICE
您在之前的PHP版本中也遇到了這些錯誤。只是你現在只有啓用了錯誤。 – PeeHaa
您確定在升級之前沒有這樣的錯誤嗎?我不這麼認爲。 –
我的php.ini完全一樣,我沒有收到任何錯誤。 –