Заставляем работать Joomla 1.0 сайт на хостинге с PHP 5.3

18.02.2012 02:05 Автор 
Оцените материал
(1 Голосовать)

Не так давно мне пришлось переносить сайт с одного хостинга на другой. Сайт работал на Joomla 1.0 и находился на хостинге с PHP4, на новом же хостинге был установлен PHP5, а именно 5.3.6. Так вот — сайт то я благополучно перенес, но работать нормально он не захотел — выскочили предупреждения, а на странице обратной связи он показал мне белый экран и с тем почил.

Я начал разбираться, какие из функций не работают на новой версии PHP. Немного покопавшись я нашёл причину проблем и сейчас постараюсь вам рассказать как можно востановить нормальную работоспособность сайта.

func_get_args

Одна из таких функций это — func_get_args(). Начиная именно с версии 5.3.X если эта функция вызвана в глобальной области видимости файла, подключенного с помощью include() или require() из функции вызывающего файла, будет сгенерировано предупреждение и возвращено значение FALSE. Для того, чтобы всё работало нормально, ищем файл includes/Cache/Lite/Function.php и заменяем в нём строчку:

$arguments = func_get_args();

на:

$arguments = func_get_args();
$numargs = func_num_args();
for($i=1; $i < $numargs; $i++){
$arguments[$i] = &$arguments[$i];

quoted_printable_encode

Данная функция используется в компоненте com_contact, а именно в файле includes/vcard.class.php. Но дело в том, что в PHP 5.3.X эта функция уже встроенна, и поэтому вызов этого файла вызывает фатальную ошибку: Fatal error: Cannot redeclare quoted_printable_encode() in includes/vcard.class.php. Для того чтобы этого не происходило заменяем код на следующий:

if(!function_exists('quoted_printable_encode')) {
  function quoted_printable_encode($input, $line_max=76) {
    /* ... */
  }
}

Код простой, я думаю, не стоит его комментировать.

Авторизуйтесь, чтобы получить возможность оставлять комментарии