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.


¿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);

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

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.


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


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.


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.


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

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


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


no hagas eso, eso oculta todos los mensajes de error, no solo para las amortizaciones.
tanaydin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.