【问题标题】:Only variable references should be returned by reference - Codeigniter只有变量引用应该通过引用返回 - Codeigniter
【发布时间】:2015-04-05 14:21:31
【问题描述】:

服务器 PHP 升级后,我在 Apache 2.0 上使用 PHP 版本 5.6.2 时出现以下错误

A PHP Error was encountered
Severity: Notice
Message: Only variable references should be returned by reference
Filename: core/Common.php
Line Number: 257

我该如何解决这个问题?

【问题讨论】:

    标签: php apache codeigniter apache2 codeigniter-2


    【解决方案1】:

    编辑文件名:core/Common.php,行号:257

    之前

    return $_config[0] =& $config; 
    

    之后

    $_config[0] =& $config;
    return $_config[0]; 
    

    更新

    由 NikiC 添加

    在 PHP 中赋值表达式总是返回赋值的值。所以 $_config[0] =& $config 返回 $config - 但不是变量本身,而是其值的副本。并且返回对临时值的引用不会特别有用(更改它不会做任何事情)。

    更新

    此修复已合并到 CI 2.2.1 (https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3)。最好升级而不是修改核心框架文件。

    【讨论】:

    • hiya... 请解释一下为什么要这样做?它有效,我不知道为什么:p
    • @GuyFreakz 在 PHP 赋值表达式中总是返回赋值的 。所以$_config[0] =& $config 返回$config - 但不是变量本身,而是其值的副本。并且返回对临时值的引用不会特别有用(更改它不会做任何事情)。
    • 是的……这很好!我不知道为什么它可以展示这些东西......:D
    • 这已被合并到 ci 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3。最好像@Chad 提到的那样升级。
    • 当我在第 243 行尝试此修复时,我使用的是旧版本的 codeigniter (2.0.2)(它在我的版本中出现)——我收到 php 500 错误。知道如何让这个工作吗?
    【解决方案2】:

    重写 codeigniter 的 core.common 文件并不是一个更好的主意。因为那是经过更多测试和系统文件....

    我为这个问题制定了一个解决方案。 在您的 ckeditor_helper.php 文件中 第 65 行

    if($k !== end (array_keys($data['config']))) {
           $return .= ",";
    }
    

    把这个改成-->

     $segment = array_keys($data['config']);
        if($k !== end($segment)) {
               $return .= ",";
        }
    

    我认为这是最好的解决方案,然后您的问题通知就会消失。

    【讨论】:

      【解决方案3】:

      这已在 codeigniter 2.2.1 中进行了修改...通常不是修改核心文件的最佳实践,我总是会检查更新,2015 年 1 月发布了 2.2.1

      【讨论】:

        猜你喜欢
        • 2017-06-03
        • 2021-07-11
        • 2017-04-03
        • 2011-10-16
        • 2020-01-12
        相关资源
        最近更新 更多