LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
26.05.2012, 18:36:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Joomla 1.0.х и PHP 5.3.3 - решение проблем совместимости  (Прочитано 3528 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
gorunov
Осваиваюсь на форуме
***

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

Сообщений: 38



« : 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
Осваиваюсь на форуме
***

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

Сообщений: 38



« Ответ #1 : 27.10.2010, 13:35:50 »

Пока коснулся только двух компонент jos_content и jos_contact. Предлагаю всем коллегам кто решит проблемы с другими компонентами ен лениться и отписаться о ходе решения.
Записан
gorunov
Осваиваюсь на форуме
***

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

Сообщений: 38



« Ответ #2 : 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
*****

Репутация: +332/-7
Offline Offline

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


AEDStudio Joomla! Direction


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

Здесь немного расширенная статья с несколькими решениями - Совместимость Joomla 1.0 и PHP 5.3
Записан
TeRReN
Осваиваюсь на форуме
***

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

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


О! ХвостеГ!


« Ответ #4 : 20.02.2012, 14:17:29 »

Сделал все исправления и сайт заработал но, не получается зайти в админку!
в окне авторизации вверху висит ошибка Deprecated: Assigning the return value of new by reference is deprecated in /usr/local/www/host239/data/administrator/index.php on line 163
пароль админа сбрасывал, авторизация не проходит(( выдает быстро какие то ошибки которые никак не получается даже записать( Кто сталкивался с подобным? Что тут делать?
Записан
SK
Завсегдатай
*****

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

Сообщений: 759


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

Когда сам столкнулся с проблемой совместимости 1.0 и 5.3.3, помучился-помучился, плюнул и перешел на версию php5.2.9.
И ни каких проблем с работой Joomla 1.0
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | 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