【问题标题】:"Call-time pass-by-reference has been removed"“调用时传递引用已被删除”
【发布时间】:2012-11-13 06:31:08
【问题描述】:

我正在尝试使用此 repo 在 Dotcloud 上部署 Wordpress,但日志中出现错误:

18:59:19: [www.0] Running postinstall script...
18:59:21: [www.0] PHP Fatal error:  Call-time pass-by-reference has been removed in /home/dotcloud/rsync-1353715101184/dotcloud-scripts/feed-wp-config.php on line 86

查看line 86 in feed-wp-config.php,内容如下:

$content = preg_replace('/(define\(\'' . $property . '\', \')(.*)(\'\);)/', '${1}' . $value . '${3}', $content, -1, &$count);

当我进入 Wordpress 起始页时,它说:“似乎没有 wp-config.php 文件。在我们开始之前我需要这个。”

我已经cross-posted this to the repo's Github issue tracker,但由于还没有回复,所以我也将其发布在这里,希望有人知道答案。

【问题讨论】:

    标签: php wordpress dotcloud


    【解决方案1】:

    从行尾的&$count 中删除 & 符号。

    请记住,这是 wordpress 中的核心 hack,更新时会丢失。

    【讨论】:

    • 更新 Wordpress 不会改变wp-config.php。你是这个意思吗?
    • 这不是主要的wp-config.php 文件,而是feed-wp-config.php。更新时也跳过了吗?
    • 文件feed-wp-config.php不是Wordpress的一部分,它是一个编辑wp-config.php的脚本,所以它不会丢失。
    【解决方案2】:

    仅将 &$count 替换为 $count& 表示您希望变量通过引用而不是值传递:

    Documentation says

    函数调用没有参考符号 - 仅在函数上 定义。仅函数定义就足以正确传递 引用的论点。自 PHP 5.3.0 起,您将收到警告 说当您使用 & 时不推荐使用“调用时传递引用” 在 foo(&$a);.

    所以如果你想通过引用来传递变量给函数,你应该在函数声明中使用&

    现在应该这样做:

    // right
    function foo(&$var) {
    ...
    }
    
    foo($foo);
    

    但不是那样(当您收到此警告时):

    function foo($var) {
    ...
    }
    
    foo(&$foo);   // <--- wrong
    

    【讨论】:

    猜你喜欢
    • 2013-11-17
    • 2017-01-29
    • 2012-06-03
    • 2011-06-07
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多