413 Запит на надто великий об’єкт - проблема із завантаженням файлу


97

Я намагаюся завантажити файл 30 Мб на свій сервер, і він не працює.

  1. Коли я завантажую файл розміром 30 Мб, сторінка завантажує " Сторінку не знайдено "

  2. Коли я завантажую файл розміром 3 Мб, я отримую " 413 запит на занадто великий об'єкт " із nginx / 0.6.32

Я намагаюся знайти nginx, щоб я міг збільшити " client_max_body_size ", але мені не вдається знайти nginx, встановлений на моєму сервері. Я навіть спробував запустити:

vi /etc/nginx/nginx.conf

або

vi /usr/local/nginx/conf/nginx.conf

щоб перевірити, чи існує файл конфігурації, але я не міг знайти його на своєму сервері.

Чи є спосіб вирішити це питання? Або мені потрібно встановити nginx на своєму сервері.

РЕДАГУВАТИ:

Я вніс усі необхідні зміни у свої файли php.ini,

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

Дякую, Раджу


перегляньте ці посилання, можливо, допоможуть вам cyberciti.biz/faq/… rtcamp.com/tutorials/php/increase-file-upload-size-limit
Ашоурі

Привіт Мухаммеде, я шукав nginx, але не міг знайти його на своєму сервері. Я впевнений, що nginx не встановлений на моєму сервері, тому мене бентежить, чому я отримую повідомлення про помилку, яке належить Nginx
Raju Vishwas

спочатку ви повинні бути впевнені, що ngix не встановлений на вашому сервері, але якщо ви повністю впевнені, можливо, з міркувань безпеки деякі менеджери серверів для того, щоб заплутати хакерів, використовують цей фокус
Ashouri

ви пробували ps aux | grep nginxперевірити, чи працює?
rpkamp

Ви пробували which nginx? Це дасть вам місце розташування виконуваного файлу, а не конфігураційного файлу, але воно має принаймні підтвердити, чи встановлений nginx чи ні.
Дуг Маклін

Відповіді:


119

Джерело: http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/

Відредагуйте файл конф. Nginx:

nano /etc/nginx/nginx.conf

Додайте рядок у розділі http:

http {
    client_max_body_size 100M;
}

Не використовуйте MB, це не спрацює, тільки M!

Також не забудьте перезапустити nginx

systemctl restart nginx

Коли я це роблю, мій 413 перетворюється на 404. Я використовую Amazon Linux на EC2. Також документ nginx показує малу літеру "m". nginx.org/en/docs/http/…
nu everest

Він запитує пароль для зміни файлу. Але я не пам’ятаю, щоб його встановили. Мені чогось не вистачає?
Sooraj

1
Шлях для nano повинен бути nano /etc/nginx/nginx.conf.
MaXi32

Працював для мене, але ПРИМІТКА: Якщо у вашому конфігу вже є http { }розділ, додайте решту всередині нього! Додавання нового http {}розділу не вдасться і призведе до "http" directive is duplicateпомилки в журналі Nginx.
jerclarke

42

-in php.ini (всередині /etc/php.ini)

 max_input_time = 24000
 max_execution_time = 24000
 upload_max_filesize = 12000M
 post_max_size = 24000M
 memory_limit = 12000M

-in nginx.conf (всередині / opt / nginx / conf)

client_max_body_size 24000M

Це працює на мою справу


Привіт, Арун, проблема з нашим сервером, я не можу знайти встановлений nginx, але він все ще видає помилку nginx
Раджу Вішва

знайти nginx всередині / opt або / etc. Усередині nginx знайдіть папку conf, потім nginx.conf.
Арун

Якщо наведена вище ідея не працює, знайдіть nginx.conf всередині Linux за допомогою будь-якого інструменту пошуку.
Арун

`max_input_time = 24000`, 24000 - це в мілісекундах?
Рішабх Аграхарі

1
@RishabhAgrahari секунди! Це встановлює максимальний час у секундах. За замовчуванням встановлено значення -1, що означає, що замість цього використовується max_execution_time. Встановіть значення 0, щоб дозволити необмежений час
Шон,

18

Спочатку відредагуйте файл конфігурації Nginx ( nginx.conf)

Розташування: sudo nano /etc/nginx/nginx.conf

Додайте наступні коди:

http {
        client_max_body_size 100M;
}

Потім додайте наступні рядки у файл конфігурації PHP ( php.ini)

Розташування: sudo gedit /etc/php5/fpm/php.ini

Додайте наступні коди:

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

1
Я відкрив свій nginx.confфайл за вказівкою, але він був порожнім! Я не очікував цього, але коли я додав ваш код, він все одно працював ... як я гадаю, можна було б очікувати, але чомусь я цього не зробив, і я був дуже радий, коли це сталося!
Ендрю Фокс

8

Будь ласка, введіть файл nginx домену:

nano /etc/nginx/sites-available/domain.set

Додайте до файлу цей код

client_max_body_size 24000M;

Якщо ви отримуєте помилку, використовуйте цю команду

nginx -t

8

Я додаю зміни безпосередньо в мій virtualhost замість глобальної конфігурації nginx, наприклад:

   server {
     client_max_body_size 100M;
     ...
   }

А потім я зміню параметри в php.ini, як коментарі вище:

   max_input_time = 24000
   max_execution_time = 24000
   upload_max_filesize = 12000M
   post_max_size = 24000M
   memory_limit = 12000M

і що ви не можете забути, це перезапустити nginx і php-fpm, в centos 7 це так:

  systemctl restart nginx
  systemctl restart php-fpm

6
sudo nano /etc/nginx/nginx.conf

Потім додайте рядок у розділі http

http {
    client_max_body_size 100M;
}

не використовуйте лише MB М.

systemctl restart nginx

то для розташування php

sudo gedit /etc/php5/fpm/php.ini

на сьогоднішній день максимально використовуйте php 7.0 або вище

sudo nano /etc/php/7.2/fpm/php.ini     //7.3,7.2 or 7.1 which php you use

перевіряйте, хто збільшується вашим бажанням.

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

перезапустіть php-fpm

service php-fpm restart 

4

Припускаючи, що ви внесли необхідні зміни у свої файли php.ini:

Ви можете вирішити проблему, додавши наступний рядок у файл nginx.conf, який можна знайти за таким шляхом:

/etc/nginx/nginx.conf

потім відредагуйте файл за допомогою текстового редактора vim наступним чином:

vi /etc/nginx/nginx.conf

і додати client_max_body_size з досить великим значенням, наприклад:

client_max_body_size 20MB;

Після цього обов’язково збережіть за допомогою :xi або:wq

А потім перезапустіть nginx.

Це воно.

Працював у мене, сподіваюся, це допоможе.


2

Я завантажую роботу із зазначеними вище змінами. Але коли я вніс зміни, я почав отримувати відповідь 404 при завантаженні файлу, що змусило мене робити подальшу налагодження, і з’ясував проблему дозволу, перевіривши nginx error.log

Рішення:

Перевірте поточне право власності користувача та групи на / var / lib / nginx.

$ ls -ld /var/lib/nginx

drwx ------. 3 nginx nginx 17 жовтня 5 19:31 / var / lib / nginx

Це говорить про те, що цією папкою володіє неіснуючий користувач та група з ім'ям nginx. Це запобігає завантаженню файлів.

У моєму випадку ім'я користувача, згадане в "/etc/nginx/nginx.conf", було

user vagrant; 

Змініть право власності на папку на користувача, визначеного в nginx.conf, у цьому випадку вагрант.

$ sudo chown -Rf vagrant:vagrant /var/lib/nginx

Переконайтеся, що це насправді змінилося.

$ ls -ld /var/lib/nginx
drwx------. 3 vagrant vagrant 17 Oct  5 19:31 /var/lib/nginx

Перезавантажте nginx та php-fpm для безпечнішої роботи.

$ sudo service nginx reload
$ sudo service php-fpm reload

Помилка, в якій відмовлено у дозволі, тепер повинна зникнути. Перевірте error.log (на основі розташування nginx.conf error_log).

$ sudo nano /path/to/nginx/error.log

0

Відкрити файл /etc/nginx/nginx.conf Додати або змінитиclient_max_body_size 0;


0

Використання:

php -i

команда або додати:

phpinfo();

щоб отримати розташування файлу конфігурації.

Оновіть ці змінні відповідно до ваших потреб та сервера

max_input_time = 24000
max_execution_time = 24000
upload_max_filesize = 12000M
post_max_size = 24000M
memory_limit = 12000M

У Linux вам потрібно буде перезапустити службу nginx / apache та phpfpm, щоб нові налаштування ini були завантажені. На xampp, підсилювачі можна перезапустити з панелі управління, що постачається з такими програмами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.