多种服务器软件的最大上传附件限制文件汇总

其实都是php啦。

每次搞这事儿都很烦,因为不同系统的php包结构相差太大,经常找了半天,还不知道究竟调用的是哪一个php.ini,不过今天发现了一个比较好的命令:

root@DokuDocker:/# php --ini
Configuration File (php.ini) Path: /etc/php/7.2/cli
Loaded Configuration File:         /etc/php/7.2/cli/php.ini
Scan for additional .ini files in: /etc/php/7.2/cli/conf.d
Additional .ini files parsed:      /etc/php/7.2/cli/conf.d/10-opcache.ini,
/etc/php/7.2/cli/conf.d/10-pdo.ini,
/etc/php/7.2/cli/conf.d/15-xml.ini,
/etc/php/7.2/cli/conf.d/20-calendar.ini,
/etc/php/7.2/cli/conf.d/20-ctype.ini,
/etc/php/7.2/cli/conf.d/20-curl.ini,
/etc/php/7.2/cli/conf.d/20-dom.ini,
/etc/php/7.2/cli/conf.d/20-exif.ini,
/etc/php/7.2/cli/conf.d/20-fileinfo.ini,
/etc/php/7.2/cli/conf.d/20-ftp.ini,
.......

显而易见,编辑/etc/php/7.2/cli/php.ini修改/确认这些行:

file_uploads = On
upload_max_filesize = 128M

post_max_size = 128M

memory_limit = -1

保存即可,如果是docker可能需要重启下container,OK了。但是往往服务器软件有第二层限制,以及一些坑,往下看。

nginx上运行php,往往是依靠php-fpm中转的,这个可以看网站对应的nginx确认,而php-fpm所遵循的php.ini文件与php-cli(也就是通常在命令里面敲的php命令)不是同一个。

root@SRMCAD:/etc/php/7.4/fpm# locate php.ini
/etc/php/7.4/cli/php.ini
/etc/php/7.4/fpm/php.ini
/usr/lib/php/7.4/php.ini-development
/usr/lib/php/7.4/php.ini-production
/usr/lib/php/7.4/php.ini-production.cli

显然,要对基于php-fpm的网站生效,应该修改的是/etc/php/7.4/fpm/php.ini,而非/etc/php/7.4/cli/php.ini

此外,还需要改/etc/nginx/nginx.conf,在其中http节加一行client_max_body_size 256M;——应该是吧,反正我这样改了并且没出问题,但并未交叉验证。

修改后,重启nginxphp-fpm服务,注意php-fpm服务的名字可能是带版本号的,需要找一下。

类似的,去修改/etc/php/7.2/cgi/php.ini文件,其他都一样。

比如说这个docker,内部用的就是php-cgilighttpd.

继续手动操作,编辑/etc/lighttpd/lighttpd.conf文件,加一行:

server.max-request-size     = 131072

131072的意思是128 * 1024,单位KB

  • 最后更改: 2022/01/13 09:53