How to eliminate php5 Strict standards errors?
Solution 1
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.
Solution 2
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,
...
Solution 3
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.
Solution 4
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);
Solution 5
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);
Related videos on Youtube
qxlab
Updated on April 08, 2020Comments
-
qxlab about 4 years
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 toE_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.
-
mark over 11 yearsdid you also restart apache then? also - usually for WAMP you can navigate to the right php.ini by clicking the icon and selecting PHP=>php.ini
-
Mihai Iorga over 11 yearsdid you
<?php phpinfo(); ?>
to see if you modified in the rightphp.ini
? -
qxlab over 11 yearsIn my case the solution for these problems is to upgrade CakePHP which I can't do since CakePHP 2.x do not support firebird. I've printed the phpinfo() and it show that my php.ini file is located at C:\wamp\bin\apache\apache2.4.2\bin. I did restart apache. And no, the php.ini file opened in the wamp menu is not the correct one.
-
Nick about 6 yearsRunning PHP 7 on IIS Win10 for development only Modifying the php.ini file solve it for me. error_reporting = E_ALL & ~E_STRICT & ~E_DEPRECATED
-
-
qxlab over 11 yearsThank you for the answer, the phpinfo() shows that I'm changing the correct php.ini file. I didn't understand your comment about the htaccess... should I try something?
-
qxlab over 11 yearsThank you!! I put "error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);" in my C:\...\cake\cake\bootstrap.php file and that solve the problem.
-
qxlab about 11 yearsAs I stated in the comment in the correct answer, to solve my problem I used
error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);
, right now I don't remember why.. -
MuntingInsekto almost 11 yearsafter using this one
error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);
my views has gone... any help? -
Amit Jha almost 10 yearsI applied same thing in bootstrap.php, but no change in Strict Standard.
-
jocull almost 10 yearsThis is the best option - my
error_reporting
inbootstrap.php
was being overridden by these settings anyways. -
Claudio Bredfeldt almost 10 yearsIt's because it gets overwritten by your
core.php
file (Configure::write('Error'...)
). See the answer further down. -
UncaAlby over 6 yearsFor users of CakePHP, this is THE correct solution. Changing the PHP.INI file has NO effect since it gets overridden here.