在Docker中找不到PHP date.timezone

PHP date.timezone not found with Docker & PHP-FPM

我正在创建一个Symfony环境(PHP-FPM,Nginx,


官方PHP Docker映像使用/usr/local/etc/php作为基本文件夹:请参阅Dockerfile。


一段时间以来,我一直面对相同的问题,主机具有正确的日期/时间,但是每个php容器都位于格林尼治标准时间而不是欧洲/巴黎或主机日期时间。

对于那些将搜索有效答案并且需要比@moliver答案更多精度的人,在dockerfile中使用sed可能不是最佳答案。此外,php.ini可能无法在构建时创建。这是我的php容器之一中的/usr/local/etc/php的ls。

1
2
3
4
root@6fd7bc929a7e:/usr/local/etc/php/conf.d# ls
docker-php-ext-bcmath.ini    docker-php-ext-exif.ini    docker-php-ext-mysqli.ini     docker-php-ext-soap.ini    docker-php-ext-xsl.ini
docker-php-ext-bz2.ini       docker-php-ext-gd.ini      docker-php-ext-pcntl.ini      docker-php-ext-tidy.ini    docker-php-ext-zip.ini
docker-php-ext-calendar.ini  docker-php-ext-mcrypt.ini  docker-php-ext-pdo_mysql.ini  docker-php-ext-xmlrpc.ini  ext-imagick.ini

(是的,我添加了很多扩展名,但默认情况下没有php.ini)。

docker-compose非常灵活,您可以添加一个包含php.ini info的卷:
版本:" 2"

1
2
3
4
5
6
7
8
services:
  php:
    build: ./DOCKERFILES/phpdemo
    container_name: applicationDEMO
    volumes:
      -"./conf/whatever.ini:/usr/local/etc/php/conf.d/whatever.ini"
      -"/etc/timezone:/etc/timezone:ro"
      -"/etc/localtime:/etc/localtime:ro"

在您的./conf/whatever.ini

1
date.timezone ="Europe/Paris"

希望这会有所帮助


我的php:5.6-apache docker映像中出现了此问题。

我只是在我的dockerfile中添加了这两行:

1
2
3
4
# use development php ini
RUN mv /usr/local/etc/php/php.ini-development /usr/local/etc/php/php.ini
# set default timezone
RUN sed -ri -e 's!;date.timezone =!date.timezone ="Europe/Paris"!g' /usr/local/etc/php/php.ini

效果很好。 :-)