Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用docker和alpine php映像更改php.ini中的值_Php_Laravel_Docker_Alpine - Fatal编程技术网

使用docker和alpine php映像更改php.ini中的值

使用docker和alpine php映像更改php.ini中的值,php,laravel,docker,alpine,Php,Laravel,Docker,Alpine,我有一个运行在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

我有一个运行在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\u input\u 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卷装载单个文件(这样可以使容器配置更干净,如果不想将Dockerfile用于其他目的,则更简单;此外,更改配置时不需要更新容器,只需重新启动它):

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


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

Hi Nico,谢谢,但我对Alpine提供的文件很满意。我不想被迫手动更改它:我使用的是PHP图像,因为我希望PHP能够现成工作,并跟踪
PHP.ini
的更改。这是我不想做的事情。我不明白:如果你不想更改图像,就不要做,直接使用它。与使用建议的方法通过附加文件更改配置设置相比,使用该图像中的默认文件执行魔术工作对我来说没有那么好。此外,这还应该通过我添加到answerHi Nico中的自定义卷工作,我尝试使您的解决方案工作,因为我同意增量文件中的单个重写行比修改原始的
php.ini
效果更好。经过一些尝试,我成功了:技巧是使用目录
/etc/php7/conf.d/
,而不是您建议的目录。它工作得很好。我将删除我的答案,因为你的答案更好!请您更改对目录的引用,因为在Alpine中,它不适用于
/usr/local/etc/php/conf.d/
?谢谢,但我没有使用docker composer,我正在Amazon ECS上部署。此外,我不想从阿尔卑斯山的图像中提取
php.ini
,并在这段时间内管理他的进化:我希望把它留给阿尔卑斯山community@LucaStucchi:Alpine和PHP社区为其软件提供了一些默认值。如果您更改了这些默认值,您就有责任将其作为代码的一部分进行管理。在Nico Haase提供的解决方案中,不需要管理整个
php.ini
,它工作得非常好。同样感谢您的解决方案,但我仍然认为,如果我不能管理Alpine提供的配置文件,我不应该这样做。同样感谢你的帮助
volumes:
  - ./php-ini-overrides.ini:/etc/php7/conf.d/php-ini-overrides.ini