Индусский код в phpBB3 – ошибка при установке и её устранение
PhpBB3 очень популярный движок для форума. Его команда, видимо состоит из разработчиков. Бывает и они ошибаются. Например у меня, при установке вывалилось следующее:
Fatal error: Cannot redeclare phpbb_realpath()
Проблема решается быстро но удивляет причина появления такой ошибки.Если честно, описанный ниже прием я вижу впервые. В файле functions.php (строка 1057) мы находим такой код:
if (!function_exists('realpath'))
{
/**
* A wrapper for realpath
* @ignore
*/
function phpbb_realpath($path)
{
return phpbb_own_realpath($path);
}
}
else
{
/**
* A wrapper for realpath
*/
function phpbb_realpath($path)
{
Тут код функции
}
}
Вот не идиотизм это? Я не гуру программирования, но такой прием, как функция в if-else с одинаковым именем, вижу впервые. Это кстати и есть причина ошибки. Заменяем эту «чудную» конструкцию на следующее:
function phpbb_realpath($path)
{
if (!function_exists('realpath'))
{
return phpbb_own_realpath($path);
}
$realpath = realpath($path);
// Strangely there are provider not disabling realpath but returning strange values.
// We at least try to cope with them.
if ($realpath === $path || $realpath === false)
{
return phpbb_own_realpath($path);
}
// Check for DIRECTORY_SEPARATOR at the end (and remove it!)
if (substr($realpath, -1) == DIRECTORY_SEPARATOR)
{
$realpath = substr($realpath, 0, -1);
}
return $realpath;
}
Неужели этот код менее читаемый чем в исходниках форума?
Если бы такие ошибки отлавливались как-нибудь устройством, вроде как жироуловитель, который решает свою задачу, то несомненно прибор пользовался бы успехом.


Сам сейчас пишу CMS и натыкался несколько раз у себя на подобные ляпы. Находить их в коде других при случайном просмотре – одно дело, а когда делаешь, бывает что-то напишешь, потом подправишь, потом еще 78 с половиной раз подправишь, и в итоге сам не замечаешь как такое выходит. И вроде у тебя все работает, не замечаешь.
нет ну ляпы в коде возможны. но вот так вот функции создавать, тут уж увольте, непонимаю
Кому как, когда я писал свою CMS я продумывал всё на перёд, возможно ошибка кроется именно в большом количестве разработчиков, один создал кусок кода, второй потом переделал, уже на готовых базах, без создания их по новой, и в результате чего ошибка при установке, которую не кто не проверил, отправить бы этот кусок создателям пущай подправят:)
То что падает инсталл, то бывает не на всех версиях, они проверили, у них сработало и хорошо. Меня больше удивила сама такая конструкция, это пздц. Неужели приведенный мной пример не лучше?
А заслать можно конечно, как улучшение кода. А вот когда пишеш свою CMS все равно все не предусмотришь, иногда приходится подпиливать но грамотно сделанная позволит избежать многочасового допиливания. Например мне как-то потребовалось, что CMS работала без базы, только на XML. Два-три часа и готово.
А что вы хотите за халяву? Халявный же движок форума, качественный если бы был, то за деньги бы продавался
ну он не сильно то и плохой, движок то, админка конечно для меня дикая какая-то
, но хороший. IPB говорят покруче будет, но не активно не использовал
Может у Вас еще и при «Could not get style data», возникающей после установки, есть решение?
Ну не решаемых проблем не бывает. Смотреть нужно на месте.