(Я пытаюсь развернуть открытый исходный код php проект в nginx. Сам проект значения не имеет.)
Мне нужно установить date.timezone в мой местный часовой пояс, потому что проект использует глобальные настройки.
Я нашел строку в моем файле php.ini (в /etc/php/7.0/fpm/php.ini для debian), но поскольку я не хотел изменять глобальные настройки, я создал новый файл ini в fpm / conf .d / каталог со строкой:
date.timezone = ('Europe/Berlin')
Это один из поддерживаемых часовых поясов, поскольку задокументировано здесь Однако, когда я смотрю на свою информацию о php, часовой пояс отражается как в «Local Value», так и в «Master Value».
Могу ли я сделать так, чтобы только в этом одном проекте php был установлен часовой пояс, в то время как глобальный оставался в UTC по умолчанию?
В 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
}
Вы можете запустить PHP своего единственного проекта как отдельный пользователь mautic
путем создания дополнительного пула FPM, например 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.
В официальная документация начинается с того места, где вы уже должны знать основную идею, что немного усложняет задачу для новичков. К счастью, есть учебные пособия, или вы могли бы даже насладиться просмотром видео.
Примечание здесь
В ситуации, когда вы разрабатываете с помощью Laravel, в config/app.php
файл вы можете указать часовой пояс только для этого проекта.
Честно говоря, поленился и просто установил в /etc/php.ini. Это охватывает все приложения php на сервере, и в большинстве случаев все приложения на сервере будут находиться в одной TZ.
Просто откройте /etc/php.ini, и они найдут строку с date.timezone и используют любой требуемый часовой пояс. Список возможных часовых поясов см. В официальном Документ PHP.