Странная проблема с vBulletin 3.8.0 и PHP 5.2.11 - PullRequest
0 голосов
/ 20 июня 2010

У меня здесь действительно странная проблема. Я пытаюсь перенести установку vBulletin 3.8.0 на новый сервер. Конфигурация нового сервера - PHP 5.2.11 с APC, Apache 2.2.3, MySQL 5.0.84 и CentOS 5. Я отлично перенес все файлы и получаю ошибку:

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 и изменила строку 61 внутри index.php из

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 не работает. Он показывает пустую страницу / белую страницу. На каком идентификаторе пользователя будет отображаться белая страница с перебоями, но если она работает, она никогда не ломается, а если нет, то всегда показывает пустую страницу.

В Google Chrome написано 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-й итерации.

Может кто-нибудь помочь мне здесь? Спасибо.

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Чтобы решить эту проблему, попробуйте установить:

apc.include_once_override   = off

в php.ini.

0 голосов
/ 23 июля 2010

Не следует менять все экземпляры require_once на require, они не делают одно и то же.

Отличайтесь от чистой копии, скачанной с vBulletin.com. Это, вероятно, покажет вам, где настоящая ошибка.

Кроме того, вам следует рассмотреть возможность обновления вашей копии vBulletin. 3.8.0 давно вышел, и есть несколько проблем, которые нужно исправить.

...