Ошибки DLE при переходе при переходе с PHP 5.2.x на PHP 5.3.x | Вебмастер DataLife Engine

При смене хостинга, сменилась и версия PHP установленная на сервере c версии 5.2.x на PHP 5.3.3. Как выяснилось, при переходе с PHP 5.2.x на PHP 5.3.x перестают работать некоторые функции, так php изживает и развивает себя. При этом у администратора сайтов начинается головная боль, особенно если используются CMS, написанные на PHP (например MODx), которые вдруг выдают ошибки. Хотя это даже не ошибки, а предупреждения, что в дальнейшем, php не будет использовать некоторые функции или заменит их.

В моем случае использовалась CMS DataLife Engine 7.5 которая при добавлении картинки к новости выдавала предупреждение

Deprecated: Function ereg_replace() is deprecated in …/engine/inc/makethumb.php on line 30

В интернете нашел 3 правила того что стоит сделать при переходе на PHP 5.3.x
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();

В моем случае проблемная строка в файле …/engine/inc/makethumb.php:

$this->img[‘format’] = ereg_replace( «.*\.(.*)$», «\\1», $imgfile );

Привожу ее к новому виду

$this->img[‘format’] = preg_replace( «.*\.(.*)$», «\\1», $imgfile );

Пробую, появляется новая ошибка

Warning: preg_replace(): Unknown modifier ‘*’ in …/engine/inc/makethumb.php on line 30 Not Supported File! Thumbnails can only be made from .jpg, gif and .png images!

Читаю инет, разбираюсь дальше. Оказывается при замене ereg_replace на preg_replace() регулярное выражение нужно заключить между //. Добавляем слеш после кавычки перед выражением и после выражения перед закрытием кавычки. Получаем такую запись:

$this->img[‘format’] = preg_replace( «/.*\.(.*)$/», «\\1», $imgfile );

Снова тестирую, все ошибки и предупреждения пропали. CMS вернулась к нормальному функционированию.

  • Опубликовано 4. января 2015
  • Автор: admin
  • Категории WordPress
Оставить комментарий
 

Еще нет никаких комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *