How to eliminate php5 Strict standards errors?

76,606

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);
Share:
76,606

Related videos on Youtube

qxlab
Author by

qxlab

Updated on April 08, 2020

Comments

  • qxlab
    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 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.

    • mark
      mark over 11 years
      did 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
      Mihai Iorga over 11 years
      did you <?php phpinfo(); ?> to see if you modified in the right php.ini ?
    • qxlab
      qxlab over 11 years
      In 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
      Nick about 6 years
      Running 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
    qxlab over 11 years
    Thank 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
    qxlab over 11 years
    Thank 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
    qxlab about 11 years
    As 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
    MuntingInsekto almost 11 years
    after using this one error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);my views has gone... any help?
  • Amit Jha
    Amit Jha almost 10 years
    I applied same thing in bootstrap.php, but no change in Strict Standard.
  • jocull
    jocull almost 10 years
    This is the best option - my error_reporting in bootstrap.php was being overridden by these settings anyways.
  • Claudio Bredfeldt
    Claudio Bredfeldt almost 10 years
    It's because it gets overwritten by your core.php file (Configure::write('Error'...)). See the answer further down.
  • UncaAlby
    UncaAlby over 6 years
    For users of CakePHP, this is THE correct solution. Changing the PHP.INI file has NO effect since it gets overridden here.