Почему мой сайт не работает под PHP 5.3?





Мой сайт перестал работать, когда было сделано обновление на более новую версию php 5.3!

Что теперь делать, если выдаются ошибки такого типа:

Function eregi() is deprecated ...
Function split() is deprecated ...

Deprecated: Function eregi() is deprecated in ...
Deprecated: Function eregi() is deprecated in ..

Эта функция является устаревшей и с новыми версиями PHP  от 5.3.0 они не используются.

В этом случаи Вам нужно обратиться к своим программистам, чтобы они заменили данные фукнции.

Либо вы можете сделать это сами.
Обычно пишется полностью скрипт и строка в которой находится данная функция.
Ее нужно заменить на новую.

Список функций:

call_user_method() -> (использовать call_user_func() вместо)
call_user_method_array()
-> (использовать call_user_func_array() вместо)
define_syslog_variables()
dl()
ereg()
-> (использовать preg_match() вместо)
ereg_replace()
-> (использовать preg_replace() вместо)
eregi()
-> (использовать preg_match() с 'i' модификатор вместо)
eregi_replace()
-> (использовать preg_replace() с 'i' модификатор вместо)
set_magic_quotes_runtime()
-> его псевдоним, magic_quotes_runtime()
session_register()
-> (использовать t $_SESSION вместо)
session_unregister()
-> (использовать  $_SESSION вместо)
session_is_registered()
-> (использовать  $_SESSION вместо)
set_socket_blocking()
-> (использовать stream_set_blocking() вместо)
split()
-> (использовать preg_split() вместо)
spliti()
-> (использовать preg_split() с 'i' модификатор вместо)
sql_regcase()
mysql_db_query()
-> (использовать mysql_select_db() and mysql_query() вместо)
mysql_escape_string()
-> (использовать mysql_real_escape_string() вместо)

Все это вы можете найти на официальном сайте!

Пример 1:

Сейчас у Вас:
if(!eregi("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$", $str))

Исправить нужно так:
if(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $str)) {

Обратите внимание все, что нужно исправить выделен жирным.

Пример 2:

На сайте выдает ошибку:

Deprecated: Function eregi() is deprecated in /home/server/domains/server.ua/public_html/includes/classes/language.php on line 87

Смотри строка 87 и в ней указано:

if (eregi('^(' . $value . ')(;q=[0-9]\\.[0-9])?, $this->browser_languages[$i]) && isset($this->catalog_languages[$key])) {

Исправляем на:

if (preg_match('/^(' . $value . ')(;q=[0-9]\\.[0-9])?$/i', $this->browser_languages[$i]) && isset($this->catalog_languages[$key])) {



И у Вас все будет отлично работать!



You can view this article online at:
http://www.rx-support.net/index.php/article/php52_php53