ISPManager – PHP5.3, CGI и timezone

Дано: FreeBSD 8.2, ISPManager, Apache 2.2, PHP 5.3. Включаем клиенту “PHP как CGI” в настройках сайта. Выводится фраза:


It is not safe to rely on the sysem's timezone settings. You are *required* to use the date.timezone settings 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/Helsinki' for 'EEST/3.0/DST' instead...

Кроме этого, иногда выдаются различные предупреждения. Идем в /usr/local/etc/php.ini – все описано верно.

Смотрим, как панель включает PHP в режиме CGI: в домашнем каталоге пользователя возникает каталог php-bin, где лежит php.ini и исполяемый файл php, который сотоит из одной строчки:

#!/usr/local/bin/php-cgi

Конечно, можно каждому пользователю недостающие параметры дописывать вручную. Но когда пользователей на сервере сотни, нужно более глобальное решение: смотрим на любом из потерпевших сайтов phpinfo(), конкретно нас интересует, где PHP смотрит на дополнительные ini-файлы.

Логика такая: если есть php.ini у самого пользователя ( а по умолчанию панель пишет каждому пользователю php.ini с парой параметров), то PHP игнорирует системный /usr/local/etc/php.ini, но будет читать все файлы в каталоге /usr/local/etc/php. Соответственно, создаем файл /usr/local/etc/php.ini с нужным нам кодом:


date.timezone="Europe/Moscow"
display_errors="0ff"
display_startup_errors="0ff"

После этого все работает правильно. Для Centos/Debian пути будут другими, но направление мысли то же – что и где искать понятно.

Если по каким-либо причинам у Вас не получилось это сделать – не расстраивайтесь, просто напишите нам и закажите услуги системного администрирования :)
Успешных проектов!