代码之家  ›  专栏  ›  技术社区  ›  IgorAlves

我的php在哪里。ini正在php Docker容器中加载?

  •  15
  • IgorAlves  · 技术社区  · 7 年前

    我在做这个 Docker instance of a linux debian:jessie 使用php 5.6。

    这是我的phpinfo的一部分:

    enter image description here

    正如我们所见 php.ini 应位于

    /usr/local/etc/php
    

    这就是我在/usr/local/etc中看到的/

    enter image description here

    但是没有php。我在里面。

    另一方面,我有php。ini内部

    enter image description here

    我们甚至没有一个php进程在运行,但php似乎还可以——在屏幕上显示phpinfo。

    enter image description here

    5 回复  |  直到 3 年前
        1
  •  19
  •   snnsnn    5 年前

    虽然来晚了一点,但由于这个问题今天仍然相关,让我补充一个简短的答案:

    /usr/local/etc/php 文件夹

    # First log into the running container
    $ docker exec -it «container_name» /bin/bash
    
    # List folder content
    $ ls /usr/local/etc/php
    
    # Which outputs following line
    conf.d  php.ini-development  php.ini-production
    

    如果需要,通过conf.d文件夹修改设置似乎是更好的选择,因为xdebug使用它。例如,您可以通过添加 uploads.ini conf.d 包含以下内容的文件夹:

    file_uploads = On
    memory_limit = 64M
    upload_max_filesize = 64M
    post_max_size = 64M
    max_execution_time = 600
    

    https://www.php.net/manual/en/ini.core.php

        2
  •  14
  •   ikhvjs    3 年前

    让我们试着回答一下:

    它根本不存在,这意味着php将运行默认选项。

    看看你的docker文件,它从一个“干净”的操作系统开始,在其中安装Apache和PHP。但它从不复制php。ini文件从PHP安装到 /usr/local/etc/php

    所以我建议,在docker文件的末尾,添加要复制的代码 php.ini-production /usr/local/etc/php.ini ,并根据需要进行编辑。或使用默认选项。

        3
  •  6
  •   johnjg12    5 年前

    默认php。docker php图像查找的ini文件是:

     /usr/local/etc/php/php.ini
    

    您可以在phpinfo函数的输出中看到这一点(只需在容器中运行“php-a”,然后运行“phpinfo();”在提示下):

    Configuration File (php.ini) Path => /usr/local/etc/php
    Loaded Configuration File => /usr/local/etc/php/php.ini
    

    当使用-v选项运行容器时,您始终可以将此文件作为卷链接到中,以获取自定义文件,如:

    docker run -v /local/path/to/php.ini:/usr/local/etc/php/php.ini [OPTIONS] IMAGE [COMMAND] [ARG...]
    

    我通常更喜欢使用它附带的默认ini文件,只需根据需要修改几个选项。如果希望容器在生成期间执行此操作,可以在Dockerfile中执行以下操作:

        RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini && \
            sed -i -e "s/^ *memory_limit.*/memory_limit = 4G/g" /usr/local/etc/php/php.ini
    

    上面的RUN命令将复制默认的生产ini文件,然后修改memory\u限制,并在ini文件中将其设置为4G。

    我更喜欢这种方法,因为它允许使用自定义配置,因此容器在被拉入时始终使用默认值,但您仍然可以选择通过传入卷来覆盖容器中的ini文件。

        4
  •  3
  •   twoTimesAgnew    7 年前

    docker-php-ext-install docker-php-ext-enable .

    pecl 先去拿包裹。看看 this Docker documentation page for more information on php extensions

        5
  •  0
  •   mevsme    3 年前

    如果您正在使用类似 沃德比 ( docker4php docker4drupal )或 或者试图找到一个答案“为什么php.ini不工作”(像我一样),这些工具使用自己的方式将配置传递到php中

    https://github.com/wodby/php#php-and-php-fpm-configuration