将PHP从5.6更新到7.2会使网站崩溃(兼容性问题)

时间:2018-11-15 10:11:10

标签: php

因此 One 会自动将我们的PHP版本更新为7.2,但是随之而来的是一些兼容性问题。我现在将其降级为5.6。我有一些PHP经验,但以前从未做过类似的事情。我已经读到不再使用自动加载功能,因此必须对其进行修复。是否有关于该主题的任何教程可以帮助我使页面运行?我已经尝试过寻找答案,但是我不知道什么是相关的,什么是不相关的。

这里是我用7.2加载页面时收到的所有警告!

  

已弃用:__autoload()已弃用,请在/ lib / vendor / dompdf /中使用spl_autoload_register()代替   第83行的include / autoload.inc.php
警告:ActiveRecord \ DateTime :: setTime($ hour,$ minute,$ second = NULL)的声明应与   / lib / vendor /中的DateTime :: setTime($ hour,$ minute,$ second = NULL,$ microseconds = NULL)   第150行的PHP-ActiveRecord / lib / DateTime.php已弃用:与类同名的方法在以后的版本中将不再是构造函数   PHP; PasswordHash在第27行的/lib/vendor/PasswordHash.php中已弃用构造函数
警告:   ini_set():无法更改zlib.output_compression-在线上已在/config/Config.php中发送的标头   9警告:session_start():当头文件已在第81行的/index.php中发送时,无法启动会话
  警告:count():参数必须是在/ lib / vendor /中实现Countable的数组或对象   第1587行的PHP-ActiveRecord / lib / Model.php

1 个答案:

答案 0 :(得分:0)

所以您看到的是一些警告和一些后续错误。

__autoload函数将在以后的PHP版本中删除。 您可以使用类似

的方式停用弃用警告
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE);

但是我建议您不要这样做,而是解决问题并使用spl_autoload_register,就像php告诉您一样。

Warning: Declaration of ActiveRecord\DateTime::setTime($hour, $minute, $second = NULL) should be compatible with DateTime::setTime($hour, $minute, $second = NULL, $microseconds = NULL) in /lib/vendor/ PHP-ActiveRecord/lib/DateTime.php on line 150
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; PasswordHash has a deprecated constructor in /lib/vendor/PasswordHash.php on line 27

这些提示某些供应商代码中的实际问题,如果可能,您可能希望使用composer将依赖项更新到当前版本。

Warning: ini_set(): Cannot change zlib.output_compression - headers already sent in /config/Config.php on line 9 
Warning: session_start(): Cannot start session when headers already sent in /index.php on line 81

这些是后续错误,因为错误输出本身。如果您解决了上述问题,这些问题将消失。

Warning: count(): Parameter must be an array or an object that implements Countable in /lib/vendor/ PHP-ActiveRecord/lib/Model.php on line 1587

这也可能是跟进错误,但是PHP7更加严格,因此您应该首先检查是否确实为count提供了一个数组。

以下是PHP7中重大更改的列表 http://php.net/manual/en/migration70.incompatible.php