26

PHP を 5.4.3 (WAMP サーバー 2.2) にアップグレードした後、CakePHP 1.3 で作成した Web アプリのインデックスに次のエラーが表示されます。

厳格な基準: C:...\cake\cake\libs\object.php の 63 行目でクラス Object の定義済みコンストラクターを再定義する

厳格な基準: 非静的メソッド Configure::getInstance() は、C:...\cake\cake\bootstrap.php の 49 行目で静的に呼び出されるべきではありません

error_reportingphp.iniの を に設定することで、この問題を解決する人がいることがわかりましたE_ALL & ~E_STRICT

コンピューターに存在する両方の php.ini ファイル (C:\wamp\bin\php\php5.4.3 および C:\wamp\bin\apache\apache2.4.2\bin) でそれを行いましたが、問題は解決しませんでした.

php_value error_reporting 6143C:...\cake.htaccessにも入れようとしましたが、成功しませんでした。

どうすればこれを解決できるか知っている人はいますか?firebird が原因で CakePHP をアップグレードできません。

4

7 に答える 7

23

PHP 5.4 での変更点の 1 つは、E_STRICT が E_ALL の一部になったことです。

したがって、/cake/bootstrap.php で、エラー報告から E_STRICT を削除できます。

error_reporting(E_ALL ^ E_STRICT);

5.4 より前のバージョンと再び互換性があります。

于 2012-09-01T15:50:53.490 に答える
9

交換してください

error_reporting = E_ALL 

あなたのphp.iniで、

error_reporting = E_ALL & ~E_STRICT

私のため

error_reporting(E_ALL ^ E_STRICT);

この質問に対する受け入れられた回答に示されているものは機能せず、Joomla Web サイトのJError エラーで無限ループが検出されました。

于 2013-03-18T16:21:55.837 に答える
4

新しいphpバージョンを使用しています。PHP 5.4 では、E_STRICT は E_ALL の一部です。

Cake 1.3 では、ファイル /cake/bootstrap.php を開き、error_reporting を次のように変更します。

error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);
于 2014-01-10T18:09:19.420 に答える
1

Cake のコンソール出力で PHP Strict の警告と戦っている場合は、app/config/core.php.

CakePhp 1.3ではerror_reporting(...)、オプションによって上書きされるため、ここで'log'は必ず除外してください。E_STRICT

/**
 * CakePHP Log Level:
 *
 * In case of Production Mode CakePHP gives you the possibility to continue logging errors.
 *
 * The following parameters can be used:
 *  Boolean: Set true/false to activate/deactivate logging
 *    Configure::write('log', true);
 *
 *  Integer: Use built-in PHP constants to set the error level (see error_reporting)
 *    Configure::write('log', E_ERROR | E_WARNING);
 *    Configure::write('log', E_ALL ^ E_NOTICE);
 */
Configure::write('log', E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
于 2015-06-23T19:08:12.243 に答える
0

フォルダー (ルート)cake のファイル bootstrap.php

if (!defined('E_ALL')) {
    define('E_ALL', 8192);
}

フォルダー (ルート)cake\libs のファイル debugger.php

error_reporting(E_ALL ^ ~E_STRICT ^ ~E_DEPRECATED);
于 2015-07-27T18:37:55.600 に答える
0

正しい php.ini ファイルを更新したことを確認してください - 次のコードでルート ディレクトリに php ファイルを作成する場合

<?php

phpinfo();

?>

これを Web ブラウザーにロードすると、どの ini ファイルが使用されているかがわかります。

htaccess ファイルが値を介してその値を設定しているphp_flag error_reporting可能性もあります。これは、ディレクトリごとに設定することもできます。

于 2012-09-01T15:42:54.240 に答える