0

Mac (Mountain Lion) で Apache2/PHP5 Web サーバーを実行しています。Lion から Mountain Lion にアップグレードしたときに、開発環境/構成が失われました。すべてをセットアップしようとしているときに、どういうわけか httpd または php.ini の設定を壊してしまいました (とにかくだと思います)... ブラウザをローカルホストに向けると、悪名高い PHP エラーが発生します:

致命的なエラー: 再宣言できません (いくつかのランダム関数)。

指しているページに関係なく、これを取得します。Web サーバーの設定が失われる前は、これは発生していなかったので、ファイルは問題なく、すべての構文も適切であると確信しています (サイト全体で一貫して include_once と require_once も使用されています)。

仮想ホストのセットアップまたは作業ディレクトリのセットアップに関係していると思います... いろいろ試しましたが、今のところ満足していません。

役立つ情報を喜んで提供させていただきます。どんな助けや提案も大歓迎です。

4

4 に答える 4

2

おそらく変更しinclude_pathたため、異なるパスを使用して同じphpファイルをロードしています。これを行うと、php はそれが同じファイルであると判断できないため、ファイルを 2 度目にロードするため、Cannot redeclareエラーが発生します。

問題を追跡する 1 つの方法は、問題のある行の直前に次を追加することです。

echo "<pre>";
print_r(explode(PATH_SEPARATOR, get_include_path()));
print_r(get_included_files());
于 2012-07-28T02:25:47.670 に答える
1

致命的なエラー: 再宣言できません (いくつかのランダムな関数)/クラス

常に同じ名前の関数またはクラスが以前に定義されていることを意味します. この例を見てください:

<?php


function test(){
 return 1;
}

function test(){
 return 2;
}
//will produce fatal error like yours


class A {}
class A {}
//Will say that it can't redeclare class A

インクルードパスがそれに応じて設定されていることを確認してください。

手がかりを得るには、次のことを試してください。

<?php

print_r ( get_included_files() );

?>
于 2012-07-28T02:29:32.680 に答える
0

別のフォーラムを見て、その問題を修正しました。私の場合、問題は次のとおり <?php include "file.inc"; $user = new user() .... ?> <?php include "file.inc" .... ?> です。「file.inc」を2回含めましたが、それが問題でした。「メイン」ファイルにインクルードを保持するだけです。

于 2013-01-04T03:06:04.807 に答える