Предпосылки к миграции:
1) Желание иметь свежий софт, очевидно обусловлено желанием использовать новые баги фичи, новый софт всегда лучше, правда? *приторно розовые очки*
2) Ветка 5.3 релизнуласьуже год назад(30 июня 2009), в начале марта этого года релизнули версию 5.3.2, а это обещает некоторую стабильность.
3) Ubuntu lucid, новый сервер с длинным сроком поддержки — 5 лет от Canonicalпоставляет версию PHP 5.3, как единственно возможную, а это значит наша компанию будет жить с этим дистрибутивом как минимум ближайшие 2.5 года.
Поддерживать на новой системе мне необходимо было некийпроприетарный софт, который частично предоставляет сырцы, частично шифрован с помощью ioncube.
Основная загвоздка с которой пришлось столкнуться это то что часть функций получили статус deprecate. В частности получиладанный статус функция split, по очевидным причинам, но продукт не мой и он должен работать.
Что происходит внутри PHP, когда он натыкается на некую deprecate функцию?
Он выставляет флаг ошибки данногокласса(E_DEPRECATED) и выводит сообщение пользователю. Если же приложение сложное, например общается с внешним миром по какому-то протоколу типа SOAP, то ошибка предупреждения может заблокироватьработу приложения(и как следствие пользователя).
Что можно придумать?
1) Самый просто и правильный способ, запретить сообщения данного класса ошибок.
Для этого в php.ini надо выставить:error_reporting = E_ALL & ~E_DEPRECATED
2) display_errors = On
Сходный с первым способом, но будет подавлять вывод всех ошибок.
3) 1й и 2й способ может не помочь, если переменная error_reporting и/илиdisplay_errors переопределяются внутри приложения, например с помощью функции error_reporting или ini_set.
Можно попробовать заменить deprecate функции в коде.
Для функции split это можноосуществить с помощью 2х замен:
а) если нужно заменить некий набор символов, тогда split можно заменить на explode
б) если split использует регулярные выражения, то можно...
1) Желание иметь свежий софт, очевидно обусловлено желанием использовать новые баги фичи, новый софт всегда лучше, правда? *приторно розовые очки*
2) Ветка 5.3 релизнуласьуже год назад(30 июня 2009), в начале марта этого года релизнули версию 5.3.2, а это обещает некоторую стабильность.
3) Ubuntu lucid, новый сервер с длинным сроком поддержки — 5 лет от Canonicalпоставляет версию PHP 5.3, как единственно возможную, а это значит наша компанию будет жить с этим дистрибутивом как минимум ближайшие 2.5 года.
Поддерживать на новой системе мне необходимо было некийпроприетарный софт, который частично предоставляет сырцы, частично шифрован с помощью ioncube.
Основная загвоздка с которой пришлось столкнуться это то что часть функций получили статус deprecate. В частности получиладанный статус функция split, по очевидным причинам, но продукт не мой и он должен работать.
Что происходит внутри PHP, когда он натыкается на некую deprecate функцию?
Он выставляет флаг ошибки данногокласса(E_DEPRECATED) и выводит сообщение пользователю. Если же приложение сложное, например общается с внешним миром по какому-то протоколу типа SOAP, то ошибка предупреждения может заблокироватьработу приложения(и как следствие пользователя).
Что можно придумать?
1) Самый просто и правильный способ, запретить сообщения данного класса ошибок.
Для этого в php.ini надо выставить:error_reporting = E_ALL & ~E_DEPRECATED
2) display_errors = On
Сходный с первым способом, но будет подавлять вывод всех ошибок.
3) 1й и 2й способ может не помочь, если переменная error_reporting и/илиdisplay_errors переопределяются внутри приложения, например с помощью функции error_reporting или ini_set.
Можно попробовать заменить deprecate функции в коде.
Для функции split это можноосуществить с помощью 2х замен:
а) если нужно заменить некий набор символов, тогда split можно заменить на explode
б) если split использует регулярные выражения, то можно...
Поделиться рефератом
Расскажи своим однокурсникам об этом материале и вообще о СкачатьРеферат