为什么会这样呢?
整个ext/MysqL
PHP扩展,它提供了与前缀命名的所有功能MysqL_
,是在PHP V5.5.0正式弃用,并在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提供了有关从迁移ext/mysql
到PDO的出色教程。
据我所知,它通过设置是可以抑制弃用错误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
。