web-dev-qa-db-ja.com

php5の厳格な標準エラーを排除する方法は?

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

厳格な標準:C:...\cake\cake\libs\object.phpの63行目のクラスオブジェクトの定義済みコンストラクターの再定義

厳格な標準:非静的メソッドConfigure :: getInstance()は、49行目のC:...\cake\cake\bootstrap.phpで静的に呼び出さないでください。

一部の人々は、error_reporting php.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 6143 C:...\cake.htaccessにありますが、成功していません。

誰もこれを解決する方法を知っていますか? firebirdが原因でCakePHPをアップグレードできません。

26
qxlab

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

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

error_reporting(E_ALL ^ E_STRICT);

5.4以前のバージョンとの互換性を確保します。

23
JvdBerg

Cakeのコアファイルを変更する代わりに、ケーキのバージョンを更新するのは面倒ですが、Config/core.phpファイルに移動して、エラーハンドラーの設定を探します。

Configure::write('Error', array(
    'handler' => 'ErrorHandler::handleError',
    'level' => E_ALL & ~E_DEPRECATED,
    'trace' => true
));

「レベル」を次のように置き換えます。

...
'level' => E_ALL & ~E_STRICT & ~E_DEPRECATED,
...
13

交換してください

error_reporting = E_ALL 

あなたのphp.iniで、

error_reporting = E_ALL & ~E_STRICT

私のために

error_reporting(E_ALL ^ E_STRICT);

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

9
Ruut

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

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

error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);
4
Gaurang P

PHP Cakeコンソール出力での厳格な警告と戦っている場合は、_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);
_
1
Serge S.

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

<?php

phpinfo();

?>

webブラウザにロードすると、使用していないiniファイルが表示されます。

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

0
cori

フォルダー(root)cakeからファイルbootstrap.php

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

フォルダー(root)cake\libsからファイルdebugger.php

error_reporting(E_ALL ^ ~E_STRICT ^ ~E_DEPRECATED);
0
KingRider