如何在Symfony 3中全局设置应用时区?
解决Symfony 3应用全局时区配置问题
遇到这种时区不一致的情况,完全不用在每个控制器里重复设置时区,Symfony本身提供了全局配置的方式,还有PHP层面的全局设置可选,下面给你两种最常用的解决方案:
1. Symfony框架全局配置(推荐)
直接在Symfony的配置文件里设置默认时区,框架会自动把这个时区应用到所有组件(包括Twig的date过滤器、DateTime处理等)。
打开app/config/config.yml,找到framework配置块,添加default_timezone参数:
framework: # 这里保留你原本的其他框架配置(比如router、form、validation等) default_timezone: Europe/Madrid
保存配置后,清空缓存(执行php bin/console cache:clear --env=prod,开发环境可去掉--env=prod),之后Twig的{{ dump("now"|date) }}就会和服务器系统时区一致了。
2. 修改PHP全局配置(服务器层面)
如果希望整个服务器的PHP环境都使用这个时区(不止你的Symfony应用),可以修改php.ini文件:
- 先找到你的php.ini路径,执行命令:
php --ini
输出里的Loaded Configuration File就是当前生效的php.ini路径。
- 打开该文件,找到
date.timezone配置项,修改为:
date.timezone = Europe/Madrid
- 重启你的Web服务(比如Apache或Nginx)以及PHP-FPM(如果用的是FPM模式),让配置生效。
验证配置是否生效
可以在控制器里添加一行代码来确认:
dump(date_default_timezone_get());
或者在Twig模板里直接输出:
{{ dump(date_default_timezone_get()) }}
如果输出是Europe/Madrid,说明配置已经生效了。
内容的提问来源于stack exchange,提问作者Argoitz
相关产品推荐
相关产品推荐

