迁移通知 本站内容正在逐步向 [[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`文件,其他都一样。 比如说[[:Website:DOKU:docker_duko_construct|这个docker]],内部用的就是`php-cgi`和`lighttpd`. ## 如果服务器软件是lighttpd 继续手动操作,编辑`/etc/lighttpd/lighttpd.conf`文件,加一行: ``` server.max-request-size = 131072 ``` `131072`的意思是`128 * 1024`,单位`KB`