Подтвердить что ты не робот

Как устранить ошибки php5 Strict?

После обновления моего PHP до 5.4.3 (WAMP server 2.2) мое веб-приложение, сделанное в CakePHP 1.3, показывает следующие ошибки в моем индексе:

Строгие стандарты: переопределение уже определенного конструктора для класса Объект в C:...\cake\cake\libs\object.php в строке 63

Строгие стандарты: нестатический метод Configure:: getInstance() должен не называться статически в C:...\cake\cake\bootstrap.php в строке 49

Я обнаружил, что некоторые люди решают эту проблему, установив 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, но безуспешно.

Кто-нибудь знает, как я могу это решить? Я не могу обновить CakePHP из-за firebird.

4b9b3361

Ответ 1

Одно из изменений в php 5.4 заключается в том, что E_STRICT теперь является частью E_ALL

Итак, в вашем /cake/bootstrap.php вы можете удалить E_STRICT из сообщения об ошибках:

error_reporting(E_ALL ^ E_STRICT);

и снова совместиться с версиями до версии 5.4.

Ответ 2

Вместо того, чтобы модифицировать файлы ядра торта, которые отстойны, если вы хотите обновить версию вашего торта, зайдите в файл Config/core.php и найдите конфигурацию обработчика ошибок:

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

и замените 'level' на это:

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

Ответ 3

Пожалуйста, замените

error_reporting = E_ALL 

в php.ini, с

error_reporting = E_ALL & ~E_STRICT

Для меня

error_reporting(E_ALL ^ E_STRICT);

который показан в принятом ответе на этот вопрос, не работал и дал Бесконечный цикл, обнаруженный в JError, для моего сайта Joomla.

Ответ 4

Вы используете новую версию php. в php 5.4, E_STRICT является частью E_ALL

в торте 1.3, откройте файл /cake/bootstrap.php и измените error_reporting следующим образом

error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);

Ответ 5

Если вы боретесь с строгими предупреждениями 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);

Ответ 6

Убедитесь, что вы обновили правильный файл php.ini - если вы создаете файл php в корневом каталоге со следующим кодом

<?php

phpinfo();

?>

и загрузите его в своем веб-браузере, он скажет вам, какой файл INI используется, если вы его пропустили.

Также возможно, что файл htaccess устанавливает это значение через значение php_flag error_reporting, которое также может быть установлено для каталога.

Ответ 7

Файл bootstrap.php из корневой папки (корневой)

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

Файл debugger.php из папки (root) cake\libs

error_reporting(E_ALL ^ ~E_STRICT ^ ~E_DEPRECATED);