PHP-Fusion Русская поддержка
05 September 2010 13:06
Навигация
· Главная
· F.A.Q.
· Форум
· Категории новостей
· Контакты
· Фотогалерея
· Карта сайта
· Поиск
· Правила поведения
· Прислать новость
· Прислать статью
· Медиа центр
· Новости
Последние фото
Спортивная схема
Спортивная схема
Альбом: Themes

Новые файлы
Мод "login redirect" 24
Плагин для статей 61
Спортивная схема в к... 53
Локаль к финальному ... 562
Финальный релиз PHP-... 518
Рекомендации
Голосование
Оправдал ли ваши ожидания релиз 7.01?

Полностью оправдал
Полностью оправдал
4% [1 Голос]

Могло быть и лучше
Могло быть и лучше
60% [15 Голосов]

Фиолетово, не использую php-fusion :)
Фиолетово, не использую php-fusion :)
12% [3 Голосов]

Разочаровал, но переходить надо
Разочаровал, но переходить надо
16% [4 Голосов]

Лечу депрессию :)
Лечу депрессию :)
8% [2 Голосов]

Голосов: 25
Вы должны авторизироваться, чтобы голосовать.
Начат: 17/08/2010 04:49

Архив опросов
История посещений
Mildi00:07:21
Alipapa00:07:25
AlexALX00:10:24
jikaka00:10:34
sergey_k00:42:52
legion00:51:26
UraganKS00:59:44
Psc01:14:19
rumble02:05:48
sergeyt02:19:10
Сейчас на сайте
· Гостей: 2

· Пользователей: 0

· Всего пользователей: 1,014
· Новый пользователь: Eugene
счетчики
Deprecated: Function eregi() is deprecated in /opt/lampp/htdocs/
С чего все начиналось


Решил я как-то обновить свой веб-сервер XAMPP. Тем более, что уже вышло куча обновлений для него. Ничего не подозревая, я с радостной улыбкой скачал новую версию XAMPP 1.7.2 и поставил его. Какое же мое было удивление, когда мой сайт равномерно покрылся, почти одинаковыми, ошибками вида:

Код
Deprecated: Function eregi() is deprecated in /opt/lampp/htdocs/maincore.php on line 18

(ну конечно адреса к страницам там были разные). Более того перестала работать горизонтальное меню на CSS. Начал активно "гуглить"- искать в чем может быть проблема. Но, к сожалению, так ничего и не нашел. Кстати, меня немного удивляет, почему так мало в интернете об этом написано. Но видимо эта связка php-Fusion и PHP 5.3.0 только набирает популярность.

Решение проблемы


Вариант №1:

Так вот... все же удалось мне найти пару статеек на английском языке о особенностях PHP 5.3.0. В общем там было написано, что при подобных ошибках в коде сайта необходимо изменить функцию "ereg" на "preg_match". Новый PHP 5.3.0 уже не знает, что такое "ereg". Вот сама статья:


Цитата
Fix `ereg is deprecated` errors in PHP 5.3

If you upgraded to PHP 5.3, chances are high you’re going to run into a few warnings or deprecated function messages.
An example is the ereg family of functions, which are gone for good, as they were slower and felt less familiar than the alternative Perl-compatible preg family.

To migrate ereg():

ereg("\.([^\.]*$)", $this->file_src_name, $extension);

becomes

preg_match("/\.([^\.]*$)/", $this->file_src_name, $extension);

Notice that I wrapped the pattern (\.([^\.]*$)) around / /, which are RegExp delimiters. If you find yourself escaping / too much (for an URL for example), you might want to use the # delimiter instead.

To migrate ereg_replace():

$this->file_dst_name_body = ereg_replace("[^A-Za-z0-9_]", "", $this->file_dst_name_body);

becomes

$this->file_dst_name_body = preg_replace("/[^A-Za-z0-9_]/", "", $this->file_dst_name_body);

Again, I just added delimiters to the pattern.
If you are using eregi functions (which are the case-insensitive version of ereg), you’ll notice there’re no equivalent pregi functions. This is because this functionality is handled by RegExp modifiers.

Basically, to make the pattern match characters in a case-insensitive way, append i after the delimiter:

eregi("\.([^\.]*$)", $this->file_src_name, $extension);

becomes

preg_match("/\.([^\.]*$)/i", $this->file_src_name, $extension);


Функция "ereg", которой напичкан php-Fusion, в новой PHP 5.3.0 уже считается старой, медлительной и не нужной, поэтому, собственно, ее и убрали.

Я так подумал, посмотрел на количество ошибок на сайте, подсчитал сколько времени займет "перелопачивание" всего кода php-Fusion и мне взгрустнулось.
Все же этот вариант не по мне. Тем более эти ошибки выскакивали и в разных панелях и модулях, которые тоже необходимо обновлять и каждый раз "перелопачивать" их код, пока обновления не пойдут с поддержкой PHP 5.3.0 .
Так что я это отбросил и стал дальше искать и думать.

Вариант № 2 :

Не буду сильно расписывать.
На одном форуме посоветовали мне обратиться на сайт SVN репозитория: _http://php-fusion.svn.sourceforge.net/viewvc/php-fusion/Version7/_ (из ссылки убрать нижнюю черту). Там уже готовый php-Fusion 7, оптимизированный под PHP 5.3.0

Вариант № 3 :
Этот вариант я сам выбрал. Наверное он самый легкий.
"Перелопачиваясь" в php.ini я случайно наткнулся на решение. В общем, открываем файл настройки PHP (php.ini) и ищем, ближе к самому концу файла, текст:
Цитата
; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
; http://php.net/mbstring.func-overload
; mbstring.func_overload = 0


0 - Оставить все без изменений.
1-4 Включить одну из функций.
7 - Включить сразу все функции.
Слово "включить" тут не совсем корректно. Речь идет об включении поддерживания старых функций, при этом новые будут отключены. Если у Вас нету никаких ошибок, то лучше их не включать.

Все это пишется в нижней строке, притом, главное, не забудьте убрать символ ";" в начале строки. Т.е. если Вы хотите, что бы были включены все функции, то нижняя строка примет вид:
Цитата
mbstring.func_overload = 7
.

Вот и все.

Заключение


Старые функции, которые мы сейчас включили, в ущерб новым, считаются менее стабильными и более "тормазными". Поэтому, если есть шанс оставить все новое на месте и решит проблему другими способами, то это даже лучше.
По мне лично разницу в скорости не ощутил. А ereg и так быстро очень работает. Все в ваших руках и головах :-).

Извиняюсь, если я слишком "тянул резину" в статье, просто хотелось по максимуму все разжевать, чтобы потом не возникли вопросы у новичков.
У меня еще к Вам просьба. Отпишитесь в комментариях, если у Вас все получилось сделать по моей статье и сайт работает на урас новым php.
Ибо у меня не так все просто получилось. Некоторые глюки появились: редкие, но меткие )

http://auroralan.ru
Комментарии
#1 | mirivlad September 05 2009 15:11:28
ты знаешь что значит deprecated? это значит что функция более не поддерживается, и в следующем релизе она будет удалена вообще. Так что лучше сразу либо обновиться либо переписать код. Кстати в 7.00.05 версии я что-то не видел ни одного ereg - везде preg_match используется.
#2 | ravenyd123 September 06 2009 15:41:36
7.00.05 у меня. Использует ereg :( притом еще пару модулей его же используют и плюс еще горизонтальная панель на CSS не работает. Так что я пока посижу на 2.9 некоторое время, а потом посмотрим.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Партнеры
Официальный сайт поддержки php-Fusion
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

03/09/2010 05:10
bari-bari, смотри личку

02/09/2010 18:16
вроде есть, на форуме где-то было

02/09/2010 13:40
есть ли где то нормально работающий мод голосование гостей-хотя бы на 7, не говоря о 701????

02/09/2010 10:09
видели, видели... уже около недели как...

02/09/2010 07:38
Оф сайт приукрасили новыми картинками)))

01/09/2010 21:37
*DRINK*

01/09/2010 15:35
*HI*

01/09/2010 08:32
Всем привет!

31/08/2010 10:50
ни того, ни другого здесь давно не было... видимо дела

31/08/2010 10:30
Mef или Rage загляните, плизз сюда или кто нить еше, у кого есть локал русс..

Наша кнопка
Будем благодарны, за размещение нашей кнопки или ссылки на наш портал.