Почему мой сайт не работает под 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