“呼叫时间传递参考已被删除”

时间:2012-11-25 17:49:46

标签: php wordpress dotcloud

我正在尝试使用此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,但由于还没有回复我在这里发布,希望有人知道答案。

2 个答案:

答案 0 :(得分:13)

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

Documentation says

  

函数调用上没有参考符号 - 仅在函数上   定义。单独的函数定义足以正确传递   参考的论点。从PHP 5.3.0开始,您将收到警告   当你使用& amp;时,不推荐使用“call-time pass-by-reference”   在foo(& $ a);。

因此,如果要通过引用函数来传递变量,则应在函数声明中使用&

现在应该这样做:

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

foo($foo);

但不是这样(因为你收到这个警告):

function foo($var) {
...
}

foo(&$foo);   // <--- wrong

答案 1 :(得分:3)

删除&amp;从该行末尾的&$count开始签名。

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