在 php:fpm docker 图片中设置 max_post_size 的位置

where to set max_post_size in the php:fpm docker image

在 docker 容器中执行的 php 应用程序

docker run -d -v "./app:/app" php:fpm 

抱怨 post_max_size (8MB) 的默认值太小,我应该增加到 32MB。

问题是,docker 图像中没有 php.ini:

# ls -R /usr/local/etc/
/usr/local/etc/:
pear.conf  php  php-fpm.conf  php-fpm.conf.default  php-fpm.d

/usr/local/etc/php:
conf.d

/usr/local/etc/php/conf.d:
docker-php-ext-mysqli.ini  docker-php-ext-pcntl.ini  docker-php-ext-sodium.ini

/usr/local/etc/php-fpm.d:
docker.conf  www.conf  www.conf.default  zz-docker.conf

当我将 post_max_size = 32M 附加到 /usr/local/etc/php-fpm.d 下的任何文件时,容器会在启动期间停止并显示错误消息

[22-Aug-2018 01:38:09] ERROR: [/usr/local/etc/php-fpm.d/www.conf:424] unknown entry 'post_max_size'
[22-Aug-2018 01:38:09] ERROR: Unable to include /usr/local/etc/php-fpm.d/www.conf from /usr/local/etc/php-fpm.conf at line 424
[22-Aug-2018 01:38:09] ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
[22-Aug-2018 01:38:09] ERROR: FPM initialization failed

当我创建一个内容为

的新文件 /usr/local/etc/php/php.ini
post_max_size = 32M

那就没效果了。使用此 docker 图片 php:fpm 时应该在哪里设置此值?

给大家介绍一下.user.ini files

Since PHP 5.3.0, PHP includes support for configuration INI files on a per-directory basis. These files are processed only by the CGI/FastCGI SAPI

您应该可以使用

将文件拖放到 ./app/.user.ini 的项目中
post_max_size = 32M

对我有用的第一个解决方案是将容器的环境变量 PHPRC 设置为我放置包含所需设置的 php.ini 文件的目录路径。