2012-11-25 54 views
4

我試圖用這個回購上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,但由於還沒有迴應我在這裏發表,以及希望有人知道答案。

回答

3

從行尾的&$count中刪除&標誌。

請記住,這是wordpress中的一個核心漏洞,它會在更新時丟失。

+0

更新Wordpress不會改變'wp-config.php'。這是你的意思嗎? – Quentin

+0

它不是主要的'wp-config.php'文件,它是'feed-wp-config.php'。更新時也跳過了嗎? – beerwin

+0

文件'feed-wp-config.php'不是Wordpress的一部分,它是一個編輯'wp-config.php'的腳本,所以它不會丟失。 – Quentin

13

$count代替&$count&意味着您希望變量按引用傳遞,而不是值:

Documentation says

有一個函數調用無符號 - 只有函數定義 。單獨的函數定義足以通過引用正確地傳遞參數 。從PHP 5.3.0開始,當您在foo(& $ a);中使用& 時,您將收到警告 ,聲稱「不需要通過呼叫時傳遞」。

所以,如果你想通過參考函數傳遞變量,你應該在函數聲明中使用&

這就是現在應該做的那樣:

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

foo($foo); 

,但不是這樣的(如你得到這個警告):

function foo($var) { 
... 
} 

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

感謝大家的幫助!我刪除了'&',現在它工作! –

+0

接受答案。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –