因此 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
答案 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