Я установил в файле php.ini часовой пояс по умолчанию:
date.timezone = Europe/Rome
Я также перезапустил службу httpd
после редактирования (service httpd restart), но когда я вызываю date_default_timezone_get()
, он возвращает значение «UTC».
Почему это происходит?
Кроме того, вызов php_info()
показывает часовой пояс, заданный в php.ini
PS. Извините за мой английский.
Если ваш код (включая любые фреймворки) действительно не изменяет часовой пояс вообще, и вы работаете под версией PHP от 5.1.x до 5.3.x, возможно, что переменная окружения TZ
установлена где-то в вашей системе. Тогда ваш параметр date.timezone
будет проигнорирован .
См. Страницу руководства PHP на date.timezone
(основное внимание):
Часовой пояс по умолчанию, используемый всеми функциями даты / времени. До PHP 5.4.0 это будет работать, только если переменная среды TZ не была установлена . […]
Чтобы проверить, установлена ли переменная среды TZ
в вашей системе, вы можете использовать
if (isset($_ENV['TZ'])) { echo 'TZ=' . $_ENV['TZ']; } else { echo 'TZ not set'; }
или положить
phpinfo();
где-то в вашем коде и проверьте раздел «Переменные PHP» в самой нижней части его вывода.
У меня была такая же проблема.
В моем php.ini
часовой пояс был хорошо информирован:
date.timezone = Europe/Paris
Я проверил с командой php --ri date
и часовой пояс в php.ini
хорошо позаботился, поэтому ошибка была не из ini-файла.
Ошибка произошла из файла httpad.conf apache, где объявлена переменная PHPIniDir .
Я PHPIniDir "C:\PHP\"
Вы должны удалить последнюю обратную косую черту, которая дает:
PHPIniDir "C:\PHP"
Надеюсь, эта обратная связь поможет.
(Точно, моя среда: Windows 7, php 5.4.32 и apache 2.2.25)