Por que isso está acontecendo?
Todo oext/mysql
Extensão PHP, que fornece todas as funções nomeadas com o prefixomysql_
, foi oficialmente obsoleto no PHP v5.5.0 e removido no PHP v7 .
Ele foi originalmente introduzido no PHP v2.0 (novembro de 1997) para MySQL v3.20, e nenhum novo recurso foi adicionado desde 2006. Juntamente com a falta de novos recursos, há dificuldades em manter esse código antigo em meio a vulnerabilidades de segurança complexas.
O manual contém avisos contra seu uso no novo código desde junho de 2011.
Como posso corrigi-lo?
Como a mensagem de erro sugere, existem duas outras extensões MySQL que você pode considerar:MySQLi e PDO_MySQL , qualquer um dos quais pode ser usado em vez deext/mysql
. Ambos estão no núcleo do PHP desde a v5.0, portanto, se você estiver usando uma versão que está lançando esses erros de descontinuação, quase certamente poderá começar a usá-los imediatamente, ou seja, sem qualquer esforço de instalação.
Eles diferem um pouco, mas oferecem várias vantagens em relação à extensão antiga, incluindo suporte de API para transações, procedimentos armazenados e instruções preparadas (fornecendo assim o melhor caminho para derrotar ataques de injeção de SQL ). O desenvolvedor PHP Ulf Wendel escreveu uma comparação completa de os recursos .
Hashphp.org tem um excelente tutorial sobre como migrar deext/mysql
para DOP .
Entendo que é possível suprimir erros de suspensão de uso definindoerror_reporting
emphp.ini
para excluirE_DEPRECATED
:
error_reporting = E_ALL ^ E_DEPRECATED
O que acontecerá se eu fizer isso?
Sim, é possível suprimir tais mensagens de erro e continuar usando o antigoext/mysql
prorrogação por enquanto. Mas você realmente não deveria fazer isso —este é um aviso final dos desenvolvedores de que a extensão não pode ser empacotada com versões futuras do PHP (na verdade, como já mencionado, ela foi removida do PHP v7). Em vez disso, você deve aproveitar esta oportunidade para migrar seu aplicativo agora , antes que seja tarde.
Observe também que esta técnica suprimirá todosE_DEPRECATED
mensagens, não apenas aquelas relacionadas aoext/mysql
extensão:portanto, você pode não estar ciente de outras alterações futuras no PHP que afetariam o código do seu aplicativo. É claro que só é possível suprimir erros que surgem na expressão em questão usando o operador de controle de erros — ou seja precedendo a linha relevante com@
— no entanto, isso suprimirá todos erros gerados por essa expressão, não apenasE_DEPRECATED
uns.
O que você deve fazer?
-
Você está iniciando um novo projeto.
Não há absolutamente nenhuma razão para usarext/mysql
— escolha uma das outras extensões, mais modernas, e colha os frutos dos benefícios que elas oferecem.
-
Você tem (sua própria) base de código legada que atualmente depende deext/mysql
.
Seria sensato realizar testes de regressão:você realmente não deveria estar alterando nada (especialmente atualizando o PHP) até que você tenha identificado todas as áreas potenciais de impacto, planejado em torno de cada uma delas e então testado exaustivamente sua solução em um ambiente de teste.
-
Seguindo as boas práticas de codificação, seu aplicativo foi desenvolvido de forma flexível/modular e os métodos de acesso ao banco de dados são todos autocontidos em um local que pode ser facilmente trocado por uma das novas extensões.
Gaste meia hora reescrevendo este módulo para usar uma das outras extensões, mais modernas; teste minuciosamente. Você pode introduzir mais refinamentos posteriormente para colher os frutos dos benefícios que eles oferecem.
-
Os métodos de acesso ao banco de dados estão espalhados por toda parte e não podem ser trocados facilmente por uma das novas extensões.
Considere se você realmente precisa atualizar para o PHP v5.5 neste momento.
Você deve começar a planejar a substituição deext/mysql
com uma das outras extensões, mais modernas, para que você possa colher os frutos dos benefícios que elas oferecem; você também pode usá-lo como uma oportunidade para refatorar seus métodos de acesso ao banco de dados em uma estrutura mais modular.
No entanto, se você tiver um pedido urgente precisar atualizar o PHP imediatamente, você pode considerar suprimir erros de depreciação por enquanto:mas primeiro certifique-se de identificar quaisquer outros erros de depreciação que também estejam sendo lançados.
-
-
Você está usando um projeto de terceiros que depende deext/mysql
.
Considere se você realmente precisa atualizar para o PHP v5.5 neste momento.
Verifique se o desenvolvedor lançou alguma correção, solução alternativa ou orientação em relação a esse problema específico; ou, se não, pressioná-los a fazê-lo, trazendo este assunto à sua atenção. Se você tiver um urgente precisar atualizar o PHP imediatamente, você pode considerar suprimir erros de depreciação por enquanto:mas primeiro certifique-se de identificar quaisquer outros erros de depreciação que também estejam sendo lançados.
É absolutamente essencial realizar testes de regressão.