Codeigniter php7错误

时间:2015-12-13 10:58:41

标签: codeigniter php-7

我在Codeigniter 2上有一个网站,当我将服务器的版本切换到PHP7时,我得到以下两个错误:

遇到PHP错误 严重性:注意 消息:只应通过引用分配变量 文件名:core / Controller.php 行号:51

$this->load->_base_classes =& is_loaded();

遇到PHP错误 严重程度:8192 消息:与其类同名的方法将不是PHP的未来版本中的构造函数; CI_DB_driver有一个不推荐使用的构造函数 文件名:database / DB_driver.php 行号:31

有谁知道如何修复它们?

2 个答案:

答案 0 :(得分:12)

最后我刚刚将CI核心更新为CodeIgniter 2.2.6。不得不将DB驱动程序更改为mysqli(因为php7中不再支持mysql)并在数据库中重新添加了ci_sessions表(不知道为什么)。就像一个魅力!

答案 1 :(得分:2)

  

只应通过引用分配变量

这个错误不是PHP 7独有的,你也可以在旧版本中获得它。无论如何,我认为这里的问题是is_loaded(),并没有正确返回引用。它是否按引用返回(就像function &is_loaded())?如果没有,它需要。它是返回变量还是表达式?如果它不是变量,则需要将其放在一个变量中,然后才能返回对它的引用。

此错误的PHP手册页:http://php.net/manual/en/language.references.return.php

  

与其类同名的方法将不是PHP的未来版本中的构造函数; CI_DB_driver有一个不推荐使用的构造函数

在PHP 4中,您通过将其命名为与类相同来创建构造函数方法。因此,如果您的课程为class FooBar,那么您的构造函数将为public function FooBar。但是,在PHP 5及更高版本中,构造函数的推荐名称为__construct。因此,去编辑该类并重命名其构造函数以消除弃用错误。请务必查看任何扩展类,看看它们是否也调用了构造函数方法,以便您可以更改它们。

请参阅升级指南:http://php.net/manual/en/migration70.deprecated.php

另见RFC:https://wiki.php.net/rfc/remove_php4_constructors