Come eliminare php5 Errori standard severi?

Dopo aver aggiornato il mio PHP alla versione 5.4.3 (server WAMP 2.2), la mia app Web realizzata in CakePHP 1.3 mostra i seguenti errori nel mio indice:

Standard rigorosi: Ridefinizione del constructor già definito per l'object class in C: … \ cake \ cake \ libs \ object.php sulla row 63

Standard rigorosi: metodo non statico Configure :: getInstance () non dovrebbe essere chiamato staticamente in C: … \ cake \ cake \ bootstrap.php sulla row 49

Ho scoperto che alcune persone risolvono questo problema impostando error_reporting in php.ini su E_ALL & ~E_STRICT .

L'ho fatto in entrambi i file php.ini (C: \ wamp \ bin \ php \ php5.4.3 e C: \ wamp \ bin \ apache \ apache2.4.2 \ bin) presenti sul mio computer ma non ha risolto il problema .

Ho anche provato a inserire php_value error_reporting 6143 in C: … \ cake.htaccess ma senza successo.

Qualcuno sa come posso risolvere questo? Non riesco ad aggiornare il mio CakePHP a causa di Firebird.

Una delle modifiche in php 5.4 è che E_STRICT è ora parte di E_ALL

Quindi, nel tuo /cake/bootstrap.php puoi rimuovere E_STRICT dalla segnalazione degli errori:

 error_reporting(E_ALL ^ E_STRICT); 

ed essere nuovamente compatibile con le versioni precedenti alla 5.4.

Invece di modificare i file core della torta, che fa schifo se vuoi aggiornare la tua versione della torta, vai nel tuo file Config / core.php e cerca la configuration del gestore degli errori:

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

e sostituisci 'livello' con questo:

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

Si prega di sostituire

 error_reporting = E_ALL 

nel tuo php.ini , con

 error_reporting = E_ALL & ~E_STRICT 

Per me

 error_reporting(E_ALL ^ E_STRICT); 

che è mostrato nella risposta accettata a questa domanda non ha funzionato e ha dato un ciclo infinito rilevato nell'errore JError per il mio sito Joomla.

Stai usando la versione php più recente. in php 5.4, E_STRICT fa parte di E_ALL

in Cake 1.3, apri il file /cake/bootstrap.php e cambia il file error_reporting in questo modo

 error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED); 

Se stai combattendo con gli avvertimenti di PHP Strict nell'output della console, dai un'occhiata alla tua app/config/core.php .

In CakePhp 1.3 error_reporting(...) viene sovrascritto dall'opzione 'log' , quindi assicurati di escludere E_STRICT qui:

 /** * 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); 

Assicurati di aver aggiornato il file php.ini corretto – se crei un file php nella tua directory principale con il seguente codice

 <?php phpinfo(); ?> 

e caricarlo nel tuo browser web ti dirà quale file ini è in uso, nel caso ne abbiate perso uno.

È anche ansible che un file htaccess stia impostando tale valore tramite il valore php_flag error_reporting , che può anche essere impostato per directory.

File bootstrap.php dalla cartella (root) cake

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

File debugger.php dalla cartella (root) cake \ libs

 error_reporting(E_ALL ^ ~E_STRICT ^ ~E_DEPRECATED);