web-dev-qa-db-ja.com

date.timezoneを設定する方法とそれを行う正しい場所は何ですか

(私はオープンソース phpプロジェクト をnginxにデプロイしようとしています。プロジェクト自体は問題ではありません。)

プロジェクトではグローバル設定を使用しているため、date.timezoneをローカルタイムゾーンに設定する必要があります。

Php.ini(debianの場合は/etc/php/7.0/fpm/php.ini)ファイルに行を見つけましたが、グローバル設定を変更したくなかったため、fpm/confに新しいiniファイルを作成しました次の行を含む.d /ディレクトリ:

date.timezone = ('Europe/Berlin') 

これは、サポートされているタイムゾーンの1つです ここに記載 ただし、php情報を見ると、タイムゾーンは「ローカル値」と「マスター値」の両方に反映されています。

グローバルをデフォルトのUTCのままにしながら、この1つのphpプロジェクトだけがタイムゾーンを設定できるようにできますか?

3
Nosh

fpm/conf.d/は追加の.iniファイルがないかスキャンされ、構成をモジュールごとなどに簡単に分離できます。これらはFPMプールごとにスキャンされます。つまり、php.iniと同様にグローバル構成です。

fpm/pool.d/poolname.confの単一のプールの個々の設定を上書きできます

php_admin_value[date.timezone] = Europe/Berlin

まもなくPHP FPM poolsこれにより、個別の設定、リソース、およびユーザー(権限)を使用できます:

  1. デフォルトのプールは、UNIXソケットをリッスンするためにfpm/pool.d/www.confで構成されています。

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

    また、すべての権限を持つユーザーwww-data(またはnginx)として実行されることにも注意してください。

  2. Nginx server{}ブロックは、PHPスクリプトがこのソケットにPHP FPM pool to handle:

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        # another fastcgi options
    }
    
  3. Mauticプロジェクト用の追加のFPMプール、たとえばfpm/pool.d/mautic.confを作成することにより、単一のプロジェクトのPHPを個別のユーザー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
    

    そして当然、関連するNginx構成でこの新しい/run/php/mautic.sockを使用します。

公式ドキュメント は、基本的なアイデアをすでに知っているはずのところから始まっているため、初心者にとっては少し難しくなります。幸いにも tutorials があります。または video を見て楽しむこともできます。

3
Esa Jokinen

ここに付記

Laravelを使用して開発している状況では、config/app.phpファイルには、そのプロジェクトのタイムゾーンのみを指定できます。

0
realtebo

正直なところ、私は怠惰で、単に/etc/php.iniに設定します。これはサーバー上のすべてのphpアプリケーションをカバーし、ほとんどの場合、サーバー上のすべてのアプリケーションは同じTZにあります。

/etc/php.iniを開くだけで、date.timezoneの行が見つかり、必要なタイムゾーンを使用します。可能なタイムゾーンのリストについては、公式の PHP doc を参照してください。

0
hgoscenski