迁移通知
本站内容正在逐步向 https://www.weiran.ink 迁移,更新内容请到新站查找。
多种服务器软件的最大上传附件限制文件汇总
其实都是php啦。
一般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-fpm
在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;——应该是吧,反正我这样改了并且没出问题,但并未交叉验证。
修改后,重启nginx和php-fpm服务,注意php-fpm服务的名字可能是带版本号的,需要找一下。
但如果用的不是php-fpm而是php-cgi
类似的,去修改/etc/php/7.2/cgi/php.ini文件,其他都一样。
比如说这个docker,内部用的就是php-cgi和lighttpd.
如果服务器软件是lighttpd
继续手动操作,编辑/etc/lighttpd/lighttpd.conf文件,加一行:
server.max-request-size = 131072
131072的意思是128 * 1024,单位KB