
(Я пытаюсь развернуть приложение с открытым исходным кодомphp-проектна nginx. Сам проект не имеет значения.)
Мне нужно установить date.timezone на мой локальный часовой пояс, поскольку проект использует глобальные настройки.
Я нашел строку в своем файле php.ini (в /etc/php/7.0/fpm/php.ini для Debian), но поскольку я не хотел менять глобальные настройки, я создал новый ini-файл в каталоге fpm/conf.d/ со строкой:
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 }
Вы можете запустить 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.
Theофициальная документацияначинается с того, где вы уже должны знать основную идею, что делает его немного сложным для новичков. К счастью, естьучебники, или вы даже можете наслаждаться просмотромвидео.
решение2
Честно говоря, я ленивый и просто устанавливаю это в /etc/php.ini. Это охватывает все приложения php на сервере и в большинстве случаев все приложения на сервере будут в одной и той же TZ.
Просто откройте /etc/php.ini и найдите строку с date.timezone и используйте нужный вам часовой пояс. Список возможных часовых поясов см. на официальном сайтеPHP-документ.
решение3
Примечание здесь
В ситуации, когда вы ведете разработку с использованием Laravel, в config/app.php
файле вы можете указать часовой пояс только этого проекта.