mysql扩展已弃用,将来将被删除:改用mysqli或PDO
当我尝试从PHP连接到MySQL服务器时,我看到以下错误: 已弃用:mysql扩展已弃用,将来将被删除:请在第123行的/path/to/filename.php中使用mysqli或PDO 参考行上的代码为:mysql扩展已弃用,将来将被删除:改用mysqli或PDO,mysql,deprecated,php,Mysql,Deprecated,Php,当我尝试从PHP连接到MySQL服务器时,我看到以下错误: 已弃用:mysql扩展已弃用,将来将被删除:请在第123行的/path/to/filename.php中使用mysqli或PDO 参考行上的代码为: mysql_connect($server, $username, $password); 我确信这些论点是正确的,而这个确切的代码多年来一直在毫无问题地工作。事实上,我是从一个关于PHP的源代码丰富的教程中获得的 为什么会这样 我怎样才能修好它 我理解,通过在php.ini中设置err
mysql_connect($server, $username, $password);
我确信这些论点是正确的,而这个确切的代码多年来一直在毫无问题地工作。事实上,我是从一个关于PHP的源代码丰富的教程中获得的
php.ini
中设置error\u reporting
以排除E\u DEPRECATED
,可以抑制不推荐使用的错误:
error_reporting = E_ALL ^ E_DEPRECATED
error_reporting = E_ALL ^ E_DEPRECATED
如果我那样做会发生什么ext/mysql
PHP扩展提供了所有以前缀mysql\ucode>命名的函数,它是和
它最初是在PHP v2.0(1997年11月)中为MySQL v3.20引入的,自2006年以来没有添加任何新特性。再加上缺乏新功能,在复杂的安全漏洞中难以维护这些旧代码
自2011年6月以来,该手册包含了针对其在新代码中使用的警告
ext/MySQL
。这两个版本都是从v5.0开始在PHP核心中出现的,所以如果您使用的版本抛出了这些弃用错误,那么您几乎可以肯定的是,您可以立即开始使用它们,也就是说,无需任何安装工作
它们略有不同,但与旧的扩展相比有许多优点,包括对事务、存储过程和准备好的语句的API支持(从而提供了失败的机会)。PHP开发人员Ulf Wendel写了一篇文章
Hashphp.org有一个php.ini
中设置error\u reporting
以排除E\u DEPRECATED
,可以抑制不推荐使用的错误:
error_reporting = E_ALL ^ E_DEPRECATED
error_reporting = E_ALL ^ E_DEPRECATED
如果我那样做会发生什么
是的,可以抑制此类错误消息并暂时继续使用旧的ext/mysql
扩展。但是您真的不应该这样做——这是开发人员发出的最后警告,该扩展可能不会与PHP的未来版本捆绑在一起(事实上,如前所述,它已经从PHP v7中删除)。相反,您应该抓住这个机会立即迁移应用程序,以免为时已晚
还请注意,此技术将抑制所有E_弃用的
消息,而不仅仅是那些与ext/mysql
扩展相关的消息:因此,您可能不知道PHP的其他即将发生的更改会影响您的应用程序代码。当然,使用PHP只可能抑制出现在问题表达式上的错误,即在相关行前面加上@
,但是这将抑制该表达式引起的所有错误,而不仅仅是e_DEPRECATED
错误你该怎么办?
- 您正在启动一个新项目。
绝对没有理由使用
——选择另一种更现代的扩展,并从它们提供的好处中获得回报ext/mysql
- 您拥有(您自己的)传统代码库,该代码库当前依赖于
执行回归测试是明智的:在确定所有潜在影响区域、围绕每个区域进行规划并在登台环境中彻底测试解决方案之前,不应该更改任何内容(尤其是升级PHP)ext/mysql
- 遵循良好的编码实践,您的应用程序是以松散集成/模块化的方式开发的,数据库访问方法在一个地方都是自包含的,可以轻松地替换为一个新的扩展。 花半个小时重写这个模块,使用另一个更现代的扩展;彻底测试。您可以在以后引入进一步的改进,以从它们提供的好处中获得回报
- 数据库访问方法分散在各地,无法轻松替换为新的扩展。
考虑一下现在是否真的需要升级到PHPV5.5
你应该开始计划用另一个更现代的扩展取代
,这样你就可以从它们提供的好处中获得回报;您还可以利用它将数据库访问方法重构为更模块化的结构 但是,如果你迫切需要升级PHP,你可以考虑暂时抑制贬义错误:但是首先要确定其他正在被丢弃的错误。ext/mysql
- 您使用的第三方项目依赖于
考虑一下现在是否真的需要升级到PHPV5.5 检查开发人员是否发布了与此特定问题相关的任何修复、解决方法或指南;或者,如果没有,通过提请他们注意这件事来迫使他们这样做。如果您迫切需要升级PHP,您可能暂时考虑抑制弃用错误:但首先要确保识别出其他被丢弃的错误。 执行回归测试是绝对必要的ext/mysql