如何设置 date.timezone 以及正确的位置是什么

Nos*_*osh 5 nginx php-fpm php7

(我正在尝试将一个开源php 项目部署到 nginx。项目本身并不重要。)

我需要将 date.timezone 设置为我的本地时区,因为该项目使用全局设置。

我在我的 php.ini(debian 的 /etc/php/7.0/fpm/php.ini)文件中发现了一行,但因为我不想更改全局设置,所以我在 fpm/conf 中创建了一个新的 ini 文件.d/ 目录中的行:

date.timezone = ('Europe/Berlin') 
Run Code Online (Sandbox Code Playgroud)

这是此处记录的受支持时区之一 但是,当我查看我的 php 信息时,时区反映在“本地值”和“主值”中。

我可以拥有它以便只有这个 php 项目设置时区,而全局保持默认 UTC 吗?

Esa*_*nen 5

扫描fpm/conf.d/其他.ini文件,从而更容易分离配置,例如每个模块。这些是针对每个 FPM 池进行扫描的,即它是一个全局配置,就像php.ini.

您可以覆盖以下位置中单个池的单独设置fpm/pool.d/poolname.conf

php_admin_value[date.timezone] = Europe/Berlin
Run Code Online (Sandbox Code Playgroud)

不久,PHP FPM 池允许使用单独的设置、资源和用户(权限):

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

    listen = /run/php/php7.2-fpm.sock
    
    Run Code Online (Sandbox Code Playgroud)

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

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

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        # another fastcgi options
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 您可以通过创建额外的 FPM 池作为单独的用户运行单个项目的 PHP mautic,例如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 Code Online (Sandbox Code Playgroud)

    并且自然地/run/php/mautic.sock在相关的Nginx配置中使用这个新的。

官方文档从你应该已经了解基本概念的地方开始,这对于初学者来说有点困难。幸运的是,有教程,或者您甚至可以观看视频