最近、PHP 5.3.8 から 5.3.20 にアップグレードしました。アップグレードが完了すると、多数の「再宣言できません」というエラーが表示されるようになりました。
[20-Dec-2012 11:15:00 America/New_York] PHP 致命的なエラー: 行 3 の /var/www/htdocs/includes/mysql.php でクラス ユーザーを再宣言できません
私の PHP クラスの 1 つで、次のようなコードを使用してコンストラクターで mysql クラスをインスタンス化します。
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();
}
}
同じクラスで、別の変数を使用して同じ mysql クラスをインスタンス化する関数を作成し、別のデータベースに接続できるようにします。この 2 番目の要件がエラーの原因であり、その理由がわかりません。show_text から require を削除するか、require_once に変更すると、正常に動作します。
このコードが失敗する原因となる、これら 2 つのバージョン間の変更点を誰か知っていますか? $db2 が require なしでどのように適切に初期化されているかさえわかりません。クラスコンストラクターを要求すると、ファイル内でグローバルに表示されますか?
編集: これはログの問題ではなく、アップグレード前にエラーは発生していませんでした。アプリはアップグレードまで正常に動作していました。これは、エラーログでエラーを有効にした方法です。
error_reporting = E_ALL & ~E_NOTICE