0

我这里有一个非常奇怪的问题。我正在尝试将 vBulletin 3.8.0 的安装迁移到新服务器。新服务器的配置是带有 APC、Apache 2.2.3、MySQL 5.0.84 和 CentOS 5 的 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() 在includes/functions_forumlist.php 文件中,并将index.php 中的第61 行从

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

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

我知道它很奇怪,但它确实加载了 index.php 页面。但是还有很多其他页面存在问题,因此我使用以下命令将所有 require_once 替换为 require:

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

这样做修复了很多页面,给我留​​下了一个奇怪的问题。当我尝试访问 http://forumsurl/member.php?u=5441 有效但 http://forumsurl/member.php?u=337 无效。它显示一个空白页/白页。在什么用户 ID 上它将显示白页是间歇性的,但如果它工作它永远不会中断,如果它不它总是显示空白页。

在谷歌浏览器上它说 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 次迭代时在循环内中断。

有谁可以帮我离开这里吗?谢谢。

4

2 回答 2

1

要解决此问题,请尝试设置:

apc.include_once_override   = off

在 php.ini 中。

于 2012-02-13T01:06:09.077 回答
0

您不应该更改require_onceto的所有实例require,它们不会做同样的事情。

将您的来源与从 vBulletin.com 下载的干净副本进行比较。这可能会告诉你真正的错误在哪里。

此外,您应该考虑升级您的 vBulletin 副本。3.8.0 已经发布了很长一段时间,有几个问题需要修补。

于 2010-07-23T12:04:45.860 回答