(我正在尝试部署一个开源php 项目到 nginx。项目本身并不重要。
我需要将 date.timezone 设置为我的本地时区,因为该项目使用全局设置。
我在我的 php.ini 文件(对于 debian 为 /etc/php/7.0/fpm/php.ini)中发现了一行,但是因为我不想更改全局设置,所以我在 fpm/conf.d/ 目录中创建了一个新的 ini 文件,其中包含以下行:
date.timezone = ('Europe/Berlin')
这是受支持的时区之一,记录在这里 然而,当我查看我的 php 信息时,时区反映在“本地值”和“主值”中。
我是否可以只为这一个 php 项目设置时区,而全局保持默认的 UTC?
答案1
会fpm/conf.d/
扫描其他.ini
文件,这样可以更轻松地分离配置(例如每个模块)。会针对每个 FPM 池扫描这些文件,也就是说,它就像 一样是全局配置php.ini
。
您可以覆盖以下单个池的个别设置fpm/pool.d/poolname.conf
:
php_admin_value[date.timezone] = Europe/Berlin
PHP FPM 池简介允许使用单独的设置、资源和用户(权限):
默认池配置
fpm/pool.d/www.conf
为监听 UNIX 套接字:listen = /run/php/php7.2-fpm.sock
还要注意,它以用户
www-data
(或nginx
)的身份运行,并拥有其所有权限。Nginx
server{}
块将 PHP 脚本传递给此套接字,以供 PHP FPM 池处理:location ~ \.php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock; # another fastcgi options }
mautic
您可以通过创建额外的 FPM 池以独立用户身份运行单个项目的 PHP ,例如fpm/pool.d/mautic.conf
为您的 Mautic 项目:[mautic] user = mautic group = mautic listen = /run/php/mautic.sock chdir = /var/www/mautic # or /home/mautic etc. listen.owner = www-data # or nginx(?) to let Nginx use the socket listen.group = www-data php_admin_value[date.timezone] = Europe/Berlin
/run/php/mautic.sock
并在相关的 Nginx 配置中自然地使用这个新的。
答案2
老实说,我很懒,只是在 /etc/php.ini 中设置它。这涵盖了服务器上的所有 php 应用程序,并且在大多数情况下,服务器上的所有应用程序都将位于同一个 TZ 中。
只需打开 /etc/php.ini,然后找到包含 date.timezone 的行,并使用所需的时区。有关可能的时区列表,请参阅官方PHP 文档。
答案3
此处附注
在您使用 Laravel 进行开发的情况下,config/app.php
您只能在文件中指定该项目的时区。