Невозможно установить часовой пояс по умолчанию в PHP
Я установил это в свой файл php.ini и перезапустил процесс php5-fpm
date.timezone = "UTC"
Но phpinfo() script все еще показывает это:
date.timezone America/New_York America/New_York
phpinfo()
также показывает, что используется правильный файл ini.
Я перезапустил, но проблема не исчезла. Затем я сделал:
sudo service nginx stop
sudo service apache2 start
и date.timezone правильна, когда mod-php (apache2) используется вместо fcgi, который является php в nginx.
Ответы
Ответ 1
Возможно, вы отредактировали неправильный php.ini
. См. php_info()
(или php -i
для интерпретатора cli), который используется. Например, на ubuntu (и, возможно, других дистрибутивах Linux) его /etc/php5/cli/php.ini
для cli-интерпретатора, /etc/php5/apache/php.ini/
для того, который используется Apaches mod_php
и /etc/php5/cgi/php.ini
, используемого php5-cgi
(который используется nginx
).
Ответ 2
Список поддерживаемых значений часового пояса: http://php.net/timezones
Ответ 3
Проблема, похоже, связана с процессами php-fpm, которые задерживаются и ссылаются на старые параметры файла php.ini.
Это сработало для меня:
Получить идентификаторы процесса для php-fpm
[email protected]:/etc/php5/fpm/conf.d# ps aux | head -1 && ps aux | grep php-fpm | grep -v grep
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 32650 0.0 0.5 86624 17032 ? Ss 21:44 0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 32652 0.0 0.1 86624 4700 ? S 21:44 0:00 php-fpm: pool www
www-data 32653 0.0 0.1 86624 4704 ? S 21:44 0:00 php-fpm: pool www
Убейте процессы. Начиная с мастера.
kill -9 32650
kill -9 32652
kill -9 32653
Запустите php-fpm, используя init script
service php5-fpm start or /etc/init.d/php5-fpm start