Joomla 1.0.15 и PHP 5.3.3 — учим работать их вместе

Поддержка CMS Joomla 1.0.15 закончилась в 2008 году, а вот сайтов, до сих пор использующих её, море. Большое количество сайтов на Joomla объясняется любовью веб-студий изготавливать на ней сайты. А после обучения сотрудников заказчика основам работы с CMS, веб-студия сдавала сайт на попечение заказчику. И заказчик даже не подозревал, что спустя годы, в один прекрасный момент, его сайт наводнится ошибками PHP или просто контент перестанет отображаться. И всё потому, что версии PHP сменяют друг друга, появляются новые функции, другие исключаются … а Joomla 1.0.15  остановилась в развитии. С появлением PHP 5.3.3  Joomla 1.0.15  прекращает нормально функционировать. Требуется  миграция на новую версию  Joomla, которая не так проста, и её конечно не смогут осилить секретари, которые ответственны за обновление сайта в своих компаниях. Да и веб-мастеру приятного мало в миграции сайта, особенно если заказчик начинает качать права, и настаивать на бесплатном исправлении.

В качестве временной меры есть быстрый способ вылечить любимую Jooml’у, но функциональность восстанавливается неполностью!

  1. Вносим изменения в com_content, в файле /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];
    }

  2. Исправляем com_contact, находим в /includes/vcard.class.php функцию:

    function quoted_printable_encode($input, $line_max=76, $space_conv=false)
    {
    /* … */
    }

    заменяем на:

    if(!function_exists(‘quoted_printable_encode’))
    {
    function quoted_printable_encode($input, $line_max=76, $space_conv=false)
    {
    /* … */
    }
    }

  3. В PHP 5.3.3 были больше не поддерживаются функции ereg*(). Решение проблем с ereg*() заключается в замене этой функции на preg_match() по следующим алгоритмам:

    ereg(«\.([^\.]*$)», $this->file_src_name, $extension);
    заменить на
    preg_match(«/\.([^\.]*$)/», $this->file_src_name, $extension);

    $this->file_dst_name_body = ereg_replace(«[^A-Za-z0-9_]», «», $this->file_dst_name_body);
    заменить на
    $this->file_dst_name_body = preg_replace(«/[^A-Za-z0-9_]/», «», $this->file_dst_name_body);

    eregi(«\.([^\.]*$)», $this->file_src_name, $extension);
    заменить на
    preg_match(«/\.([^\.]*$)/i», $this->file_src_name, $extension);

    split (string pattern, string string [, int limit])
    заменить на
    preg_split ( string pattern, string subject [, int limit [, int flags]] )

Всё перечисленное лишь временная мера, и не может использоваться на постоянной основе, поэтому мигрируйте на новую версию Joomla! Помнится веб-студия Кафтар очень уважала джумлу, а хостятся все её сайты у Вавилона…. интересно, что будет, когда Вавилон на хостинге установит новую версию PHP?!


Добавить комментарий

Ваш e-mail не будет опубликован.