После обновления моего PHP до 5.4.3 (WAMP server 2.2) мое веб-приложение, сделанное в CakePHP 1.3, показывает следующие ошибки в моем индексе:
Строгие стандарты: переопределение уже определенного конструктора для класса Object в C: … \ cake \ cake \ libs \ object.php в строке 63
- Ошибка Dropbox при запросе токена доступа
- Запустите функцию PHP на кнопке html
- MYSQL находит, как разные текстовые поля?
- Настройка конфигурации display_error PHP в .htaccess
- Запрос обновления MySQL в PHP
Строгие стандарты: нестатический метод 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.
Одним из изменений в php 5.4 является то, что E_STRICT теперь является частью E_ALL
Таким образом, в вашем /cake/bootstrap.php вы можете удалить E_STRICT из отчетов об ошибках:
error_reporting(E_ALL ^ E_STRICT);
и снова совместимы с версиями до версии 5.4.
Вместо того, чтобы модифицировать файлы ядра торта, которые отстойны, если вы хотите обновить версию вашего торта, зайдите в файл Config / core.php и найдите конфигурацию обработчика ошибок:
Configure::write('Error', array( 'handler' => 'ErrorHandler::handleError', 'level' => E_ALL & ~E_DEPRECATED, 'trace' => true ));
и замените «уровень» следующим:
... 'level' => E_ALL & ~E_STRICT & ~E_DEPRECATED, ...
Пожалуйста, замените
error_reporting = E_ALL
в php.ini , с
error_reporting = E_ALL & ~E_STRICT
Для меня
error_reporting(E_ALL ^ E_STRICT);
который показан в принятом ответе на этот вопрос, не работал и дал бесконечный цикл, обнаруженный в ошибке JError для моего сайта Joomla.
Вы используете новую версию php. в php 5.4, E_STRICT является частью E_ALL
в торте 1.3, открыть файл /cake/bootstrap.php и изменить error_reporting, как это
error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);
Если вы сражаетесь с PHP Strict предупреждениями в выпуске консоли 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);
Убедитесь, что вы обновили правильный файл php.ini – если вы создаете файл php в корневой директории со следующим кодом
<?php phpinfo(); ?>
и загрузите его в свой веб-браузер, он скажет вам, какой файл INI используется, если вы его пропустили.
Также возможно, что файл htaccess устанавливает это значение через php_flag error_reporting
, которое также может быть установлено для каждого каталога.
Файл bootstrap.php из папки (корневой) торт
if (!defined('E_ALL')) { define('E_ALL', 8192); }
Файл debugger.php из папки (root) cake \ libs
error_reporting(E_ALL ^ ~E_STRICT ^ ~E_DEPRECATED);