2010-06-20 64 views
0

我在這裏進行了一個非常奇怪的問題。我正嘗試將vBulletin 3.8.0的安裝遷移到新服務器。新服務器的配置是PHP 5.2.11與APC,阿帕奇2.2.3,MySQL的5.0.84和CentOS 5.我已經完全轉移所有文件和我得到的錯誤是:vBulletin 3.8.0和PHP 5.2.11的奇怪問題

Fatal error: Call to undefined function construct_forum_bit() in /var/www/forums/index.php on line 565

所以,我發現了功能construct_forum_bit()被包括在裏面的index.php/functions_forumlist.php文件和改變的線61從

require_once(DIR . '/includes/functions_forumlist.php');

require(DIR . '/includes/functions_forumlist.php');

我知道它很奇怪,但它確實加載了index.php頁面。但也有很多其中有問題,所以我全部換成放在require_once需要使用以下命令其他網頁:

grep -rl require_once . | xargs sed -i -e 's/require_once/require/'

這樣做固定大量的頁面,只剩下我一個奇怪的問題。當我嘗試訪問http:// forumsurl/member.php?u = 5441作品,但http:// forumsurl/member.php?u = 337不起作用。它顯示一個空白頁面/白頁。在什麼用戶標識符會顯示白色頁面是間歇性的,但如果它工作,它永遠不會中斷,如果它沒有,它總是顯示空白頁面。

在谷歌瀏覽器,它說 Error 324 (net::ERR_EMPTY_RESPONSE): Unknown error.

我試圖修復所有的表,但沒有運氣。

所以我就開始手工調試過程,並把範圍縮小到下面的代碼,它打破:


473 foreach ($blocklist AS $blockid => $blockinfo) 
474 { 
475  $blockobj = $blockfactory->fetch($blockinfo['class']); 
476  $block_html = $blockobj->fetch($blockinfo['title'], $blockid, $blockinfo['options'], $vbulletin->userinfo); 
477 
478  if (!empty($blockinfo['hook_location'])) 
479  { 
480   $template_hook["$blockinfo[hook_location]"] .= $block_html; 
481  } 
482  else 
483  { 
484   $blocks["$blockid"] = $block_html; 
485  } 
486 } 

我已經把echo語句在文件中,如果我「退出」不同的線路上面的foreach之前它顯示了所有的語句,但是它在第6次迭代中在循環內部斷開。

任何人都可以幫助我嗎?謝謝。

回答

0

您不應該將require_once的所有實例更改爲require,它們不會執行相同的操作。

將您的源與vBulletin.com下載的乾淨副本區分開來。這可能會告訴你真正的錯誤在哪裏。

此外,你應該考慮升級你的vBulletin的副本。 3.8.0已經出現一段時間了,有幾個問題需要修補。

+0

謝謝您回覆。我知道我需要升級到最新版本的vBulletin,但我試圖找出問題的根源。 'require'確實使頁面正常工作,但在foreach循環的第6次迭代中發生了一些破壞腳本的內容。 因此,我設置了LAMP堆棧並安裝了PHP 5.3.3。令我驚訝的是它正常工作!雖然我沒有檢查每個鏈接的功能,但大部分鏈接都正常工作。 但遺憾的是我必須堅持使用PHP 5.2.11,因爲我已經有一個運行在5.3.x上的大應用程序。 – miles 2010-07-31 21:54:08

1

要解決這個問題,可以嘗試設置:

apc.include_once_override = off 
在php.ini