如何设置 date.timezone 以及正确的设置位置在哪里

如何设置 date.timezone 以及正确的设置位置在哪里

(我正在尝试部署一个开源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 池简介允许使用单独的设置、资源和用户(权限):

  1. 默认池配置fpm/pool.d/www.conf为监听 UNIX 套接字:

    listen = /run/php/php7.2-fpm.sock
    

    还要注意,它以用户www-data(或nginx)的身份运行,并拥有其所有权限。

  2. Nginxserver{}块将 PHP 脚本传递给此套接字,以供 PHP FPM 池处理:

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        # another fastcgi options
    }
    
  3. 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您只能在文件中指定该项目的时区。

相关内容