Reputation: 1536
After upgrading my PHP to 5.4.3 (WAMP server 2.2), my web app made in CakePHP 1.3, is showing the following errors in my index:
Strict standards: Redefining already defined constructor for class Object in C:...\cake\cake\libs\object.php on line 63
Strict standards: Non-static method Configure::getInstance() should not be called statically in C:...\cake\cake\bootstrap.php on line 49
I've found that some people solve this problem by setting the error_reporting
in php.ini to E_ALL & ~E_STRICT
.
I did that in both php.ini files (C:\wamp\bin\php\php5.4.3 and C:\wamp\bin\apache\apache2.4.2\bin) present on my computer but it didn't solve the problem.
I also tried to put php_value error_reporting 6143
in C:...\cake.htaccess but without success.
Does anybody know how can I solve this? I can't upgrade my CakePHP because of firebird.
Upvotes: 26
Views: 77170
Reputation: 2257
File bootstrap.php from folder (root)cake
if (!defined('E_ALL')) {
define('E_ALL', 8192);
}
File debugger.php from folder (root)cake\libs
error_reporting(E_ALL ^ ~E_STRICT ^ ~E_DEPRECATED);
Upvotes: 0
Reputation: 4915
If you're fighting with PHP Strict warnings in cake console output, take a look into your app/config/core.php
.
In CakePhp 1.3 error_reporting(...)
is overwritten by the 'log'
option, so ensure you exclude E_STRICT
here:
/**
* 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);
Upvotes: 1
Reputation: 2100
You are using newer php version. in php 5.4, E_STRICT is part of E_ALL
in cake 1.3, open file /cake/bootstrap.php and change the error_reporting like this
error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);
Upvotes: 4
Reputation: 21856
One of the changes in php 5.4 is that E_STRICT is now part of E_ALL
So, in your /cake/bootstrap.php you could remove the E_STRICT from your error reporting:
error_reporting(E_ALL ^ E_STRICT);
and be compatible again with before 5.4 versions.
Upvotes: 23
Reputation: 1422
Instead of modifying the cake core files, which sucks if you want to update your cake version, go into your Config/core.php file and look for the error handler configuration:
Configure::write('Error', array(
'handler' => 'ErrorHandler::handleError',
'level' => E_ALL & ~E_DEPRECATED,
'trace' => true
));
and replace 'level' with this:
...
'level' => E_ALL & ~E_STRICT & ~E_DEPRECATED,
...
Upvotes: 14
Reputation: 1161
Please replace
error_reporting = E_ALL
in your php.ini, with
error_reporting = E_ALL & ~E_STRICT
For me
error_reporting(E_ALL ^ E_STRICT);
which is shown in the accepted answer to this question did not work and gave an Infinite loop detected in JError error for my Joomla website.
Upvotes: 9
Reputation: 8810
Make sure you've updated the correct php.ini file - if you create a php file in your root directory with the following code
<?php
phpinfo();
?>
and load it in your web browser it will tell you which ini file is being used, in case you missed one.
It's also possible that an htaccess file is setting that value via the php_flag error_reporting
value, which can also be set per directory.
Upvotes: 0