2016-03-14 21 views
1

我使用Docker & Docker-compose创建Symfony环境(PHP-FPM,Nginx,&)。未找到Docker&PHP-FPM的PHP date.timezone

但是,PHP不使用我的php.ini并忽略配置(在我的Symfony应用程序中找不到date.timezone参数)。

当然,当我在我的容器上时,date.timezone在2个php.ini(cli & FPM)中正确设置。

我不明白为什么,但它的作品,如果我把我的php.ini中在/ usr/local/etc中/ PHP/文件夹(WTF)

我错过了什么?

搬运工-compose.yml:

nginx: 
    image: nginx 
    volumes: 
     - "./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro" 
    links: 
     - "php:php" 
    ports: 
     - "80:80" 
     - "443:443" 
    working_dir: "/etc/nginx" 

php: 
    build: docker/php 
    volumes: 
     - ".:/var/www:rw" 
    working_dir: "/var/www" 

Dockerfile:

FROM php:5-fpm 

ENV DEBIAN_FRONTEND noninteractive 

RUN apt-get update && \ 
    apt-get install -y php5-common php5-fpm php5-cli php5-mysql php5-apcu php5-intl php5-imagick && \ 
    apt-get clean && \ 
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

RUN sed -i 's/;date.timezone =/date.timezone = "Europe\/Paris"/g' /etc/php5/fpm/php.ini 
RUN sed -i 's/;date.timezone =/date.timezone = "Europe\/Paris"/g' /etc/php5/cli/php.ini 

RUN usermod -u 1000 www-data 

回答

0

官方PHP泊坞图片使用/usr/local/etc/php作为基本文件夹:见Dockerfile

2

我一直在面对相同的问题一段时间,主机有一个正确的日期/时间,但每个PHP容器是在GMT而不是欧洲/巴黎或主机日期时间。

对于那些将搜索有效答案并需要比@moliver答案更精确的人,在dockerfile中使用sed可能不是最佳答案。而且,php.ini可能不会在建造时创建。这里是我的一个php容器中的/usr/local/etc/php的ls。

[email protected]:/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)。

泊坞窗,撰写非常灵活,你可以添加一个体积含有的php.ini信息: 版本: '2'

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

date.timezone = "Europe/Paris" 

希望这有助于