如何解决不推荐使用 mysql 扩展并将在将来删除:请改用 mysqli 或 PDO
-
为什么会这样?
ext/mysql
提供所有以前缀命名的函数的整个PHP 扩展在 PHP v5.5.0
中mysql_
被正式弃用,并在 PHP v7
中被删除。
它最初是在 MySQL v3.20 的 PHP v2.0(1997 年 11 月)中引入的,自 2006 年以来没有添加任何新功能。再加上缺乏新功能,在复杂的安全漏洞中很难维护这些旧代码。
自 2011 年 6 月以来,该手册已包含针对其在新代码中使用的警告。
-
我该如何解决?
正如错误消息所暗示的那样,您可以考虑另外两个 MySQL
扩展:MySQLi和PDO_MySQL,其中任何一个都可以用来代替ext/mysql
. 自 v5.0 以来,两者都在 PHP
核心中,因此,如果您使用的版本会引发这些弃用错误,那么您几乎可以肯定立即开始使用它们——例如。无需任何安装工作。
它们略有不同,但与旧扩展相比具有许多优势,包括对事务、存储过程和预准备语句的 API 支持(从而提供了击败SQL 注入攻击的最佳方法)。PHP 开发人员 Ulf Wendel对这些特性进行了彻底的比较。
Hashphp.org
有一个关于从PDO迁移的优秀教程ext/mysql
。
-
我知道可以通过设置exclude
error_reporting
来抑制弃用错误:php.ini``E_DEPRECATED
> error_reporting = E_ALL ^ E_DEPRECATED
如果我这样做会发生什么?
是的,可以抑制此类错误消息并ext/mysql
暂时继续使用旧扩展。但是 是开发人员的最后警告,该扩展可能不会与 PHP
的未来版本捆绑在一起(事实上,正如已经提到的,它已从 PHP v7 中删除)。相反,您应该借此机会立即迁移您的应用程序 , 以免为时已晚。
另请注意,此技术将抑制 所有 E_DEPRECATED
消息,而不仅仅是与ext/mysql
扩展有关的消息:因此,您可能不知道即将对 PHP
进行的其他更改会影响您的应用程序代码。当然,可以通过使用 PHP
的错误控制运算符(即
在相关行前面加上-,@
然而,这将抑制该表达式引发的 所有 错误,而不仅仅是错误E_DEPRECATED
。
你该怎么办?
绝对 没有理由 使用ext/mysql
“选择其他更现代的扩展程序之一”来获得它们提供的好处的回报。
执行回归测试是明智的:在您确定所有潜在的影响领域,围绕每个领域进行计划并在暂存环境中彻底测试您的解决方案之前,您真的不应该更改 任何内容(尤其是升级 PHP)。
* **遵循良好的编码实践,您的应用程序是以松散集成/模块化的方式开发的,并且数据库访问方法都是自包含的,可以很容易地替换为新扩展之一。**
花半个小时重写这个模块以使用另一个更现代的扩展;彻底测试。您可以稍后引入进一步的改进,以获得它们提供的好处的回报。
* **数据库访问方法分散在各处,不能轻易地换成新的扩展之一。**
考虑此时是否真的需要升级到 PHP v5.5。
您应该开始计划ext/mysql
用其他更现代的扩展之一替换,以便您可以从它们提供的好处中获得回报;您也可以将其作为一个机会,将您的数据库访问方法重构为更加模块化的结构。
但是,如果您 迫切 需要立即升级 PHP,您可能会考虑暂时抑制弃用错误:但首先要确保识别出任何其他也被抛出的弃用错误。
考虑此时是否真的需要升级到 PHP v5.5。
检查开发人员是否发布了与此特定问题相关的任何修复、解决方法或指南;或者,如果没有,通过提请他们注意这件事来迫使他们这样做。如果您 迫切 需要立即升级 PHP,您可能会考虑暂时抑制弃用错误:但首先要确保识别出任何其他也被抛出的弃用错误。
执行回归测试是绝对必要的。
解决方法
当我尝试从 PHP 连接到 MySQL 服务器时,我看到以下错误:
不推荐使用:不推荐使用 mysql 扩展并将在将来删除:在第 123 行的 /path/to/filename.php 中使用 mysqli 或 PDO
代替
引用行上的代码是:
mysql_connect($server,$username,$password);
我确信这些论点是正确的,并且这个确切的代码已经运行了多年而没有问题。事实上,我是从一个资源丰富的 PHP 教程中获得它的。
-
为什么会这样?
-
我该如何解决?
-
我知道可以通过设置exclude
error_reporting
来抑制弃用错误:php.ini``E_DEPRECATED
error_reporting = E_ALL ^ E_DEPRECATED
如果我这样做会发生什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。