Часовой пояс по умолчанию в Европе установлен в php.ini, но date_default_timezone_get () возвращает 'UTC'

Я установил в файле 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)