使用 docker 和高山 php 图像更改 php.ini 中的值

Change a value in php.ini using docker with an alpine php image

我在 docker 上有一个 PHP 应用程序 运行,基于 php:7.3-alpine3.9

对于一个大表单,我发布了 1000 多个输入,而且我不仅得到了错误

Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0`

但最糟糕的是,只有 1000 个输入被传递到后端

看来我需要更改 php.ini 中的 max_input_vars,但我该怎么做呢?

正如您在回答中提到的那样,将 sed 添加到您的 Dockerfile 是一种方法,但我认为这不是最好的方法。我的建议是,您将正常运行的 php.ini 与您的源代码一起保留,并在您使用 docker-compose.yml 文件旋转它时将其安装到您的容器中。

version: "3.7"

services:
  app:
    image: app_image
    volumes:
      - ./php.ini:/etc/php7/php.ini

这使得调试更容易并且非常干净。

通常,会扫描某种配置目录以查找更多文件。尝试将包含本地设置的文件放在那里,如下所示:

php.ini.local:

max_input_vars = 20000

在你的 Dockerfile:

FROM php:7.3-alpine3.9

# Project-specific ini settings
COPY ./php-ini-overrides.ini /etc/php7/conf.d/

另一种方法是通过 Docker 卷挂载该单个文件(如果您不想为其他文件使用 Docker 文件,这可以使容器配置更清晰并且更简单目的;此外,更改配置时不需要更新容器,只需重新启动即可):

volumes:
  - ./php-ini-overrides.ini:/etc/php7/conf.d/php-ini-overrides.ini

这是最好的方法,因为您不必修改任何现有文件或跟踪上游容器的更改

一个简短的提示:如果解决方案不能直接起作用,请检查您是否需要调整文件夹以放入该文件。另一个基本图像可能会将该文件夹放置到另一个位置