¿Por qué sucede esto?
Todo el
ext/mysql
Extensión de PHP, que proporciona todas las funciones nombradas con el prefijomysql_
, fue obsoleto oficialmente en PHP v5.5.0 y eliminado en PHP v7 .Se introdujo originalmente en PHP v2.0 (noviembre de 1997) para MySQL v3.20, y no se han agregado nuevas funciones desde 2006. Junto con la falta de nuevas funciones, existen dificultades para mantener un código tan antiguo en medio de vulnerabilidades de seguridad complejas.
El manual contiene advertencias contra su uso en código nuevo desde junio de 2011.
¿Cómo puedo solucionarlo?
Como sugiere el mensaje de error, hay otras dos extensiones de MySQL que puede considerar:MySQLi y PDO_MySQL , cualquiera de los cuales se puede usar en lugar de
ext/mysql
. Ambos han estado en el núcleo de PHP desde v5.0, por lo que si está utilizando una versión que arroja estos errores de obsolescencia, es casi seguro que puede comenzar a usarlos de inmediato, es decir, sin ningún esfuerzo de instalación.Difieren ligeramente, pero ofrecen una serie de ventajas sobre la extensión anterior, incluida la compatibilidad con API para transacciones, procedimientos almacenados y declaraciones preparadas (por lo tanto, proporcionan la mejor manera para derrotar ataques de inyección SQL ). El desarrollador de PHP Ulf Wendel ha escrito una comparación exhaustiva de las características .
Hashphp.org tiene un excelente tutorial sobre cómo migrar desde
ext/mysql
a DOP .Entiendo que es posible suprimir los errores de desaprobación configurando
error_reporting
enphp.ini
para excluirE_DEPRECATED
:error_reporting = E_ALL ^ E_DEPRECATED
¿Qué pasará si hago eso?
Sí, es posible suprimir dichos mensajes de error y continuar usando el antiguo
ext/mysql
prórroga por el momento. Pero realmente no deberías hacer esto —esta es una advertencia final de los desarrolladores de que es posible que la extensión no se incluya con versiones futuras de PHP (de hecho, como ya se mencionó, se eliminó de PHP v7). En su lugar, debe aprovechar esta oportunidad para migrar su aplicación ahora , antes de que sea demasiado tarde.Tenga en cuenta también que esta técnica suprimirá todos
E_DEPRECATED
mensajes, no solo los que tienen que ver conext/mysql
extensión:por lo tanto, es posible que no esté al tanto de otros cambios próximos a PHP que afectarían el código de su aplicación. Por supuesto, solo es posible suprimir los errores que surgen en la expresión en cuestión mediante el operador de control de errores -es decir. anteponiendo la línea relevante con@
—sin embargo, esto suprimirá todos errores generados por esa expresión, no soloE_DEPRECATED
unos.
¿Qué debe hacer?
-
Estás comenzando un nuevo proyecto.
No hay absolutamente ninguna razón para usar
ext/mysql
— elija una de las otras extensiones, más modernas, y coseche las recompensas de los beneficios que ofrecen. -
Tiene (su propia) base de código heredada que actualmente depende de
ext/mysql
.Sería prudente realizar pruebas de regresión:realmente no debería cambiar nada (especialmente la actualización de PHP) hasta que haya identificado todas las posibles áreas de impacto, planificado en torno a cada una de ellas y luego probado minuciosamente su solución en un entorno de prueba.
-
Siguiendo una buena práctica de codificación, su aplicación se desarrolló de forma modular/ligeramente integrada y los métodos de acceso a la base de datos son independientes en un solo lugar que se puede cambiar fácilmente por una de las nuevas extensiones.
Dedique media hora a reescribir este módulo para usar una de las otras extensiones más modernas; prueba a fondo. Más adelante puede introducir mejoras adicionales para cosechar las recompensas de los beneficios que ofrecen.
-
Los métodos de acceso a la base de datos están dispersos por todas partes y no se pueden cambiar fácilmente por una de las nuevas extensiones.
Considere si realmente necesita actualizar a PHP v5.5 en este momento.
Debería comenzar a planear reemplazar
ext/mysql
con una de las otras extensiones, más modernas, para que puedas cosechar las recompensas de los beneficios que ofrecen; también puede usarlo como una oportunidad para refactorizar sus métodos de acceso a la base de datos en una estructura más modular.Sin embargo, si tiene un problema urgente necesita actualizar PHP de inmediato, podría considerar suprimir los errores de desaprobación por el momento:pero primero asegúrese de identificar cualquier otro error de desaprobación que también se esté generando.
-
-
Está utilizando un proyecto de terceros que depende de
ext/mysql
.Considere si realmente necesita actualizar a PHP v5.5 en este momento.
Verifique si el desarrollador ha publicado arreglos, soluciones alternativas u orientación en relación con este problema específico; o, en caso contrario, presionarlos para que lo hagan llamándoles la atención sobre este asunto. Si tiene una urgente necesita actualizar PHP de inmediato, podría considerar suprimir los errores de desaprobación por el momento:pero primero asegúrese de identificar cualquier otro error de desaprobación que también se esté generando.
Es absolutamente esencial realizar pruebas de regresión.