Ошибки при переходе при переходе с PHP 5.2.x на PHP 5.3.x (Deprecated: function..., глобальные переменные, работа с сессиями)

При переходе с PHP 5.2.x на PHP 5.3.x перестают работать некоторые функции, так php изживает и развивает себя. Но для разработчика начинается головная боль, особенно если используются CMS, написанные на PHP (например MODx), которые вдруг выдают ошибки.
Хотя это даже не ошибки, а предупреждения, что в дальнейшем, php не будет использовать некоторые функции или заменит их.
1) Итак счастливым обладателям php 5.3.x стоит заменить:
ereg() — впредь используйте preg_match()
ereg_replace() — пользуйтесь preg_replace()
eregi() — пользуйтесь preg_match() с модификатором ‘i’
eregi_replace() — пользуйтесь preg_replace() с модификатором ‘i’
split() — пользуйтесь preg_split()
spliti() — пользуйтесь preg_split() с модификатором ‘i’
set_magic_quotes_runtime() и ее синоним magic_quotes_runtime()
session_register() — пользуйтесь суперглобальный массив $_SESSION
session_unregister() — пользуйтесь суперглобальный массив $_SESSION
session_is_registered() — пользуйтесь суперглобальный массив $_SESSION
set_socket_blocking() — пользуйтесь е stream_set_blocking()
mysql_db_query() — пользуйтесь mysql_select_db() и mysql_query()
mysql_escape_string() — пользуйтесь mysql_real_escape_string()
2) Переменные Depecated в PHP 5.3.x надо заменить соответственно:
HTTP_SERVER_VARS -> _SERVER
HTTP_POST_VARS -> _POST
HTTP_ENV_VARS -> _ENV
HTTP_GET_VARS -> _GET
HTTP_COOKIE_VARS -> _COOKIES
HTTP_SESSION_VARS -> _SESSION
HTTP_POST_FILES -> _FILES
3) Теперь для разрушения сессии обязательно надо сделать unset всех переменных сессии ($_SESSION = array()):
session_start(); $_SESSION = array(); session_destroy();
Ошибка №1 (встретилась в MODx 0.9.6.3): Function split() is deprecated
PHP error debug Error: Function split() is deprecated Error type/ Nr.: - 8192 File: /var/www/html/funfly/cms/manager/includes/document.parser.class.inc.php Line: 844 Line 844 source: $tempSnippetParams= split($splitter, $tempSnippetParams);
Решение:
Сначала небольшие изменения внесём в файл manager/includes/config.inc.php
, чтобы нам показывались ошибки, заменим строку
error_reporting(E_ALL & ~E_DEPRECATED | E_STRICT);
на
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
Теперь в manager/includes/document.parser.class.php
, заменим строку 2502
if (error_reporting() == 0 || $nr == 0 || ($nr == 8 && $this->stopOnNotice == false)) {
на
if (error_reporting() == 0 || $nr == 0 || (error_reporting() & $nr) != $nr || ($nr == 8 && $this->stopOnNotice == false)) {
чтобы игнорировались ошибки, которые нам неинтересны и они не передавалиь в конфигурационный файл.
Если не хотим игнорировать, то решением проблемы может быть замена split на explode

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 0 Composer – пакетный менеджер PHP. Что и как? (13.01.2022)
- 0 MySQL и PHP: Вычисление возраста (количество лет) по дате рождения (20.06.2017)
- 0 Как изменить часовой пояс на сервере (16.11.2013)
- 0 PHP: Как удалить файлы по маске? (07.11.2013)
- 0 Регулярные выражения в PHP (12.04.2014)
- 0 Защита от спама в phpBB3 без капчи (09.10.2013)
- 0 Php функция implode внутри запроса SELECT к MySQL. (02.09.2013)
- 0 MODx: Настраиваем ЧПУ. Как убрать из URL расширение .html? (27.05.2013)
- 0 Как убрать папку www из денвера? (22.03.2013)
- 0 Устанавливаем и настраиваем WampServer (аналог MAMP в Mac и возможная замена Denwer'у) на Windows (22.03.2013)
- 0 Полезные возможности PhpStorm и настройка горячих клавиш (14.03.2013)
- Оборачиваем изображения в ссылки с помощью хука add_filter('the_content', ...) в functions.php (14.08.2019)
- Добавляем форму отправки обратного звонка на сайт (по Javascript и с ReCaptcha) (29.07.2019)
- Преимущества ИТ–аутсорсинга (25.03.2019)
- Отладка PHP кода в консоли браузера (22.03.2019)
- Ошибка в phpmyadmin: count(): Parameter must be an array or an object that implements Countable (27.03.2019)
- Две или более reCaptcha на одной странице. Несколько рекапч на странице (25.02.2019)
- Оверлей кнопка на видео HTML5 video overlay play button (15.02.2019)
- MODx: меню Wayfinder со ссылками-якорями и для разных контекстов (15.02.2019)
- MODx: как привязать другой домен/поддомен к отдельной странице сайта. Переключение контекстов в зависимости от URL (15.02.2019)
- Как скинуть пароль администратора в MODx (07.02.2019)
- Перенос сайта на MODx на другой домен (07.02.2019)
- MODx ошибка Site temporarily unavailable (при переносе/копировании сайта) (07.02.2019)
- MODX: Ошибка с phpThumb после обновления с 2.2.6 на 2.3.0 - не отображаются картинки (16.08.2018)
- Битрикс: Формирование цены - отделить пробелом тысячи от сотен (04.02.2018)
