Ошибки PHP после обновления

Решил заняться обновлением ПО на web-server, т.к. вышла новая версия PHP 5.3.0

После обновления php до версии php-5.3.0 в конфиге апача увидел флуд из следующих строк.

Читаем под катом....

Ошибка №1

[Wed Jul 28 13:28:23 2010] [error] [client 62.84.105.180] PHP Warning:  date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Moscow' for 'MSD/4.0/DST' instead in /var/www/gnu.su/www/plugins/log/log.php on line 47, referer: http://gnu.su/index.php


Решение следующее:
в файле /etc/php/apache2-php5/php.ini

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Moscow


Перезапускаем апач(apache).

# /etc/init.d/apache2 restart


Ошибка №2

[Wed Jul 28 13:29:57 2010] [error] [client 62.84.105.180] PHP Deprecated:  Function ereg() is deprecated in *.php on line 24, referer: http://gnu.su/index.php


Решение следующее:


Функция "ereg", которой напичкан php-Fusion, в новой PHP 5.3.0 уже считается старой, медлительной и не нужной, поэтому, собственно, ее и убрали.
Функция
ereg("\.([^\.]*$)", $this->file_src_name, $extension);
Стала функцией
preg_match("/\.([^\.]*$)/", $this->file_src_name, $extension);

1.1 Вариант решения №1

В том же самом файле /etc/php/apache2-php5/php.ini

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
; http://php.net/mbstring.func-overload
; mbstring.func_overload = 0


Можно использовать следующие опции
0 - без изменений
1 - использовать устаревшую функцию mail в обход новой
2 - использовать устаревшую функцию str в обход новой
3 - использовать устаревшую функцию ereg в обход новой
7 - включить поддержку всех устаревших функций.

как у меня:

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
; http://php.net/mbstring.func-overload
mbstring.func_overload = 4


1.2 Вариант решения №2
Предпочтительный
Заменить код:

ereg("\.([^\.]*$)", $this->file_src_name, $extension);


preg_match("/\.([^\.]*$)/", $this->file_src_name, $extension);





Вас также может заинтересовать:

Релиз дистрибутива для восстановления после сбоя - SystemRescueCd 2.7.0
В Firefox 14 планируют включить возможность активации Flash-контента только после клика
Еще обновления...
После года разработки представлен релиз новой стабильной ветки почтового сервера Postfix - 2.9.0
Обновления сайта GNU.SU
22.11.2010 - Обновления сайта