Desactiva los errores obsoletos en PHP 5.3

127

Mi servidor está ejecutando PHP 5.3 y mi instalación de WordPress está escupiendo estos errores, causando que se rompa mi session_start ().

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 647

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 662

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 669

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 676

Deprecated: Assigning the return value of new by reference is deprecated in /home//public_html/hub/wp-settings.php on line 712

Esto es molesto, pero no quiero desactivar el informe de errores en pantalla. ¿Cómo deshabilito estas molestas advertencias obsoletas?

Estoy ejecutando WordPress 2.9.2.

atwellpub
fuente
¿No es 3.3.1 la versión actual actualizada de WordPress?
Shadur
parece gustarle un viejo php con wordpress antiguo
Qchmqs

Respuestas:

203

Puede hacerlo en código llamando a las siguientes funciones.

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

o

error_reporting(E_ALL ^ E_DEPRECATED);
Robus
fuente
Gracias Robus, ¿esto también eliminará cualquier informe de error de PHP?
atwellpub
66
No, el primero básicamente le dice a php que muestre los errores ERROR / WARNING / PARSE / NOTICE, el segundo le dice a php que muestre todos los errores menos DEPRECATED.
Robus
1
Usando PHP 5.5.9 en Ubuntu "error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_STRICT" No tiene ningún efecto ... pero, en mi ejemplo, "@mysql_connect ();" haz el truco :-(
molokoloco
@molokoloco lo hiciste mal dos veces. Primero no arreglaste nada. Lo acabas de silenciar. En segundo lugar, sigues usando el mysqlque está en desuso. Al menos debería cambiar amysqli
Marcin Orlowski
No funciona ¿Está sobreescrito en alguna parte? ¿Dónde pones esto?
Alex
22

Necesitaba adaptar esto a

error_reporting = E_ALL & ~E_DEPRECATED
Simon H
fuente
21

Para obtener solo los errores que hacen que la aplicación deje de funcionar, use:

error_reporting(E_ALL ^ (E_NOTICE | E_WARNING | E_DEPRECATED));

Esto dejará de mostrar avisos, advertencias y errores obsoletos.

codefreak
fuente
13

Todas las respuestas anteriores son correctas. Como nadie ha indicado cómo desactivar todos los errores en PHP, me gustaría mencionarlo aquí:

error_reporting(0); // Turn off warning, deprecated,
                    // notice everything except error

Alguien puede encontrarlo útil ...

sudip
fuente
11

Acabo de enfrentar un problema similar en el que un complemento de SEO emitió una gran cantidad de advertencias que hacen que el uso del disco de mi blog supere el límite del plan.

Descubrí que debe incluir el comando error_reporting después de que wp-settings.php requiera en el archivo wp-config.php:

   require_once( ABSPATH .'wp-settings.php' );
   error_reporting( E_ALL ^ ( E_NOTICE | E_WARNING | E_DEPRECATED ) );

Al hacer esto, no se agregarán más advertencias, avisos ni líneas en desuso a su archivo de registro de errores.

Probado en WordPress 3.8 pero supongo que funciona para todas las instalaciones.

Camaleo
fuente
9

En el archivo wp-config.php puedes encontrar WP_DEBUG constante. Asegúrese de que esté configurado en falso.

define('WP_DEBUG', false);

Esto es para WordPress 3.x.

Audrius
fuente
7

Tienes que editar el archivo de configuración de PHP. Encuentra la linea

error_reporting = E_ALL

y reemplazarlo con:

error_reporting = E_ALL ^ E_DEPRECATED

Si no tiene acceso al archivo de configuración, puede agregar esta línea al archivo PHP WordPress (tal vez headers.php):

error_reporting(E_ALL ^ E_DEPRECATED);
Kreker
fuente
Es mucho mejor agregar esto wp-config.php. Está destinado a ser editado con ajustes de configuración.
Nilpo
4

Tiendo a usar este método

$errorlevel=error_reporting();
$errorlevel=error_reporting($errorlevel & ~E_DEPRECATED);

De esta manera no apago accidentalmente algo que necesito

Realtebo
fuente
1
Eso te da menos control. Estás asumiendo que lo que está configurado actualmente es correcto. Es mejor configurarlo directamente según sea necesario para que no se superpongan las configuraciones.
Nilpo
Entender. Cada caso es diferente.
realtebo
1
Sin embargo, esta es la mejor respuesta. Es el único que responde directamente a la pregunta: solo deshabilite E_DEPRECATED, sin efectos secundarios.
Sygmoral
-2

este error ocurre cuando cambia su versión de php: es muy simple suprimir este mensaje de error

Para suprimir el mensaje de error DEPRECATED, simplemente agregue el código a continuación en su archivo index.php:

init_set ('display_errors', False);

dheerendra
fuente
no hagas eso, eso oculta todos los mensajes de error, no solo para las amortizaciones.
tanaydin