只有变量应该通过函数引用来分配
Posted
技术标签:
【中文标题】只有变量应该通过函数引用来分配【英文标题】:Only variables should be assigned by reference with function 【发布时间】:2017-06-06 23:27:49 【问题描述】:我使用旧版本的 Codeigniter 框架。使用新版本的 php 我收到此错误:
Only variables should be assigned by reference
我想知道这是否是安全的错误修正: 改变:
$this->_base_classes =& is_loaded();
到
$assign = is_loaded();
$this->_base_classes =& $assign;
是一样的吗?
【问题讨论】:
【参考方案1】:请看这个网址
https://github.com/bcit-ci/CodeIgniter/issues/904
你可以去file: system/core/Loader.php
然后
file: system/core/Common.php
第190行应该有:
function &is_loaded($class = '')
【讨论】:
【参考方案2】:这是一个旧版本不再支持mysql的codeigniter错误。
你可以去文件:system/core/Loader.php 然后文件:system/core/Common.php 第190行应该有:
//function is_loaded($class = '') >>> Edit this one like the expression below
function &is_loaded($class = '')
function &is_loaded($class = '')
之后转到文件:application/config/database.php 并更改以下内容:
//$db['default']['dbdriver'] = 'mysql'; >>> Edit this one like the expression below.
$db['default']['dbdriver'] = 'mysqli';
我希望它有效
【讨论】:
您应该编辑您的帖子以包含代码格式。另外,这是否会将实际的 SQL 驱动程序更改为不同的数据库驱动程序?【参考方案3】:从system/core/Loader.php
中删除第150行
$this->_base_classes =& is_loaded();
..
【讨论】:
【参考方案4】:转到文件:system\core,您将找到一个名为 Common.php 的文件
打开文件并转到第 190 行
你会在哪里找到function is_loaded($class = '')
用这行代码替换它function &is_loaded($class = '')
【讨论】:
直接在内核中更改文件不是一个好主意。正确的方法是将该文件复制到 application/core/MY_Common.php 并在其中更改它,保持原始文件不变。 为什么你觉得这不是一个好主意??我自己试过了,对我没有任何问题。 因为如果您需要将该版本的 codeigniter 升级到更新的版本并修改系统文件会让您更加头疼。【参考方案5】:改变
$this->_base_classes =& is_loaded();
到
$this->_base_classes = $this->is_loaded();
为我工作。
【讨论】:
以上是关于只有变量应该通过函数引用来分配的主要内容,如果未能解决你的问题,请参考以下文章