Увеличение размера загружаемого файла

Thank you for reading this post, don't forget to subscribe!

Директива upload_max_filesize в php.ini

В кон­фи­гу­ра­ци­он­ном фай­ле php.ini с помо­щью дирек­ти­вы upload_max_filesize уста­нов­лен мак­си­маль­ный раз­мер загру­жа­е­мых фай­лов на сервер.

Учти­те, что в PHP так же уста­нов­лен мак­си­маль­ный раз­мер POST запро­сов с помо­щью дирек­ти­вы post_max_size, кото­рый дол­жен быть боль­ше или равен мак­си­маль­но­му раз­ме­ру загру­жа­е­мых файлов:

В зави­си­мо­сти от кон­фи­гу­ра­ции сер­ве­ра, новые зна­че­ния могут всту­пить в силу сра­зу после вне­се­ния изме­не­ний, или же потре­бу­ет­ся пере­за­пу­стить веб-сер­вер или PHP интерпретатор.

Директивы PHP через .htaccess

Если у вас нет досту­па к фай­лу кон­фи­гу­ра­ции PHP, вы може­те попро­бо­вать уста­но­вить зна­че­ния с помо­щью фай­ла .htaccess веб-сер­ве­ра Apache. Если вы рабо­та­е­те с Apache, то в кор­не­вой дирек­то­рии с вашим сай­том WordPress навер­ня­ка уже есть файл .htaccess, в кото­рый вы може­те доба­вить сле­ду­ю­щие значения:

Изме­не­ния в фай­лы .htaccess как пра­ви­ло всту­па­ют в силу сра­зу после сохранения.

Директивы PHP через nginx.conf

Для веб-сер­ве­ра nginx к сожа­ле­нию нет воз­мож­но­сти исполь­зо­вать файл .htaccess, но если вы ищи­те воз­мож­ность изме­нять зна­че­ния php.ini с помо­щью кон­фи­гу­ра­ци­он­но­го фай­ла nginx, это дела­ет­ся через дирек­ти­ву fastcgi_param (в слу­чае если PHP настро­ен как FastCGI клиент):

Кста­ти в nginx есть дирек­ти­ва client_max_body_size, кото­рая отве­ча­ет за мак­си­маль­ный раз­мер дан­ных пере­да­ва­е­мых в HTTP запро­сах. Она тоже вли­я­ет на мак­си­маль­ный раз­мер загру­жа­е­мых фай­лов. Для вступ­ле­ния в силу изме­не­ний кон­фи­гу­ра­ци­он­но­го фай­ла nginx, веб-сер­вер необ­хо­ди­мо перезагрузить.

client_max_body_size 50m;

 

Проблемы с fastcgi

Может быть про­бле­ма при загруз­ки фай­лов свы­ше 128 кб, т.е. фай­лы не загру­жа­ют­ся и в резуль­та­те полу­ча­ем ошиб­ку 500 (Internal Server Error),
да же если ваши настрой­ки PHP настро­е­ны на загруз­ку боль­ших файлов.

Что мы дела­ем что бы убе­дит­ся свя­за­но ли это с рабо­той mod_fcgi.

Смот­рим лог сер­ве­ра, в момент загруз­ки фай­ла через ваш сайт, файл дол­жен быть боль­ше 128 Кб

tail -f /var/www/user1/logs/test.t.error.lo | grep mod_fcgid

Если вы уви­ди­те подоб­ную ошибку

[warn] [client IP] mod_fcgid: HTTP request length 136469 (so far) exceeds MaxRequestLen (131072), referer: http://.…

то зна­чить модуль mod_fcgid огра­ни­чи­ва­ет загруз­ку боль­ше 128 кб

Реше­ние про­стое, уве­ли­чи­ва­ем этот лимит на больший.
Откры­ва­ем основ­ной кон­фиг mod_fcgi

/etc/httpd/conf.d/fcgid.conf
и уве­ли­чи­ва­ем мак­си­маль­ный раз­мер, напри­мер в 50 мб:

FcgidMaxRequestLen 50000000