2010-06-20 213 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