Форум русской поддержки Joomla!® CMS
24.01.2017, 05:01:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Joomla 1.0.х и PHP 5.3.3 - решение проблем совместимости

 (Прочитано 12048 раз)
0 Пользователей и 1 Гость смотрят эту тему.
gorunov
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Сообщений: 27



« : 27.10.2010, 13:05:28 »

Уже многие заметили, что при переходе хостеров на PHP 5.3.3 упали сайты на Joomla 1.0.х.
И так, начинаем лечить:

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. Решение проблем с ereg*()

В PHP 5.3.3 были депрекнуты (больше не поддерживаются)  функции ereg*()
Если вы в конфиге включите error_reporting нарпимер на max левел, то увидите множество сообщений типа

Deprecated: Function eregi() is deprecated in /home/siteroot/....

Ман по этой проблеме можете прочитать здесь: [ссылка]

В кратце, решение проблема с 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]] )

NB: первый аргумент (паттерн) почти всегда должен начинаться  и заканчиваться на "/"

P.S. Переходите на Joomla 1.5


« Последнее редактирование: 10.11.2010, 15:23:32 от gorunov » Записан
 
gorunov
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Сообщений: 27



« Ответ #1 : 27.10.2010, 14:58:56 »

Понемножку фиксим проблемму с ereg*

1. Начнем с ядра /includes/joomla.php

Строку:
   
Код:
if ( $date && ereg( "([0-9]{4})-([0-9]{2})-([0-9]{2})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $date, $regs ) ) {

заменяем на

 
Код:
     if ( $date && preg_match( "/([0-9]{4})-([0-9]{2})-([0-9]{2})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})/", $date, $regs ) ) {
Записан
Aleks_El_Dia
Moderator
*****

Репутация: +353/-0
Offline Offline

Пол: Мужской
Сообщений: 3740


AEDStudio Joomla! Direction


« Ответ #2 : 24.11.2011, 11:01:55 »

Здесь немного расширенная статья с несколькими решениями - Совместимость Joomla 1.0 и PHP 5.3
Записан
SK
Практически профи
*******

Репутация: +161/-0
Offline Offline

Сообщений: 2153


« Ответ #3 : 01.03.2012, 08:28:37 »

Когда сам столкнулся с проблемой совместимости 1.0 и 5.3.3, помучился-помучился, плюнул и перешел на версию php5.2.9.
И ни каких проблем с работой Joomla 1.0
Записан
dusha
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 30


« Ответ #4 : 06.06.2013, 04:56:13 »

Тоже теперь мучаюсь... Регистер глобалс и мэйджик квотс из хтакцесса убрал, пробую сунуть в корень PHP.ини - сайт вообще вылетает, будь там даже пустой PHP.ини...
Сейчас не рабоатет VirtueMart, не удается загрузить товар...
*****************************
После добвления таймзона в конфиг заработал PHP.ини !

Как заставить работать VirtueMart - теперь вопрос... Разбираюсь дальше, пока трабл Warning: fgetcsv() [function.fgetcsv]:
« Последнее редактирование: 06.06.2013, 12:35:45 от dusha » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet