413 Anforderungsentität zu groß - Problem beim Hochladen von Dateien


97

Ich versuche, eine 30-MB-Datei auf meinen Server hochzuladen, die jedoch nicht funktioniert.

  1. Wenn ich eine 30-MB-Datei hochlade, wird auf der Seite " Seite nicht gefunden " geladen.

  2. Wenn ich eine 3-MB- Datei hochlade, erhalte ich " 413 Request Entity Too Large " mit nginx / 0.6.32

Ich versuche, nginx zu finden, damit ich " client_max_body_size " erhöhen kann, aber ich kann nginx auf meinem Server nicht finden. Ich habe sogar versucht zu laufen:

vi /etc/nginx/nginx.conf

oder

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

um zu überprüfen, ob die Konfigurationsdatei vorhanden ist, aber ich konnte sie auf meinem Server nicht finden.

Gibt es überhaupt eine Möglichkeit, dieses Problem zu beheben? Oder muss ich nginx auf meinem Server installieren?

BEARBEITEN:

Ich habe alle notwendigen Änderungen in meinen php.ini-Dateien vorgenommen.

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

Danke, Raju



Hallo Mohammad, ich habe nach Nginx gesucht, aber ich konnte es auf meinem Server nicht finden. Ich bin sicher, dass Nginx nicht auf meinem Server installiert ist, daher bin ich verwirrt darüber, warum ich eine Fehlermeldung
erhalte,

Zuerst müssen Sie sicher sein, dass ngix nicht auf Ihrem Server installiert ist, aber wenn Sie ganz sicher sind, verwenden einige Server-Manager für verwirrende Hacker diesen Trick möglicherweise aus Sicherheitsgründen
Ashouri,

Haben Sie versucht, ps aux | grep nginxzu sehen, ob es läuft?
RPPamp

Hast du es versucht which nginx? Dadurch erhalten Sie den Speicherort der ausführbaren Datei, nicht die Konfigurationsdatei, aber es sollte zumindest bestätigt werden, ob nginx installiert ist oder nicht.
Doug McLean

Antworten:


118

Quelle: http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/

Bearbeiten Sie die conf-Datei von nginx:

nano /etc/nginx/nginx.conf

Fügen Sie im http-Abschnitt eine Zeile hinzu:

http {
    client_max_body_size 100M;
}

Verwenden Sie kein MB, es wird nicht funktionieren, nur das M!

Vergessen Sie auch nicht, nginx neu zu starten

systemctl restart nginx

Wenn ich das mache, verwandelt sich mein 413 in einen 404. Ich verwende Amazon Linux auf EC2. Auch das Nginx-Dokument zeigt ein Kleinbuchstaben 'm'. nginx.org/en/docs/http/…
nu everest

Es wird nach einem Passwort gefragt, um die Datei zu ändern. Aber ich kann mich nicht erinnern, einen eingestellt zu haben. Vermisse ich etwas
Sooraj

1
Der Pfad für Nano sollte nano /etc/nginx/nginx.conf sein.
MaXi32

Hat bei mir funktioniert, aber HINWEIS: Wenn Ihre Konfiguration bereits einen http { }Abschnitt enthält, fügen Sie den Rest hinzu! Das Hinzufügen eines neuen http {}Abschnitts schlägt fehl und gibt einen "http" directive is duplicateFehler im Nginx-Protokoll aus.
Jerclarke

42

-in php.ini (innerhalb von /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 (inside / opt / nginx / conf)

client_max_body_size 24000M

Es funktioniert für meinen Fall


Hallo Arun, das Problem mit unserem Server ist, ich kann
Nginx

finde nginx in / opt oder / etc. Suchen Sie in nginx den Ordner conf und dann die Datei nginx.conf.
Arun

Wenn die obige Idee nicht funktioniert, suchen Sie mit einem beliebigen Suchwerkzeug nach nginx.conf unter Linux.
Arun

`max_input_time = 24000`, 24000 ist in Millisekunden?
Rishabh Agrahari

1
@ RishabhAgrahari Sekunden! Dies legt die maximale Zeit in Sekunden fest. Die Standardeinstellung ist -1, was bedeutet, dass stattdessen max_execution_time verwendet wird. Auf 0 setzen, um unbegrenzte Zeit zuzulassen
Sean

18

Bearbeiten Sie zuerst die Nginx-Konfigurationsdatei ( nginx.conf)

Ort: sudo nano /etc/nginx/nginx.conf

Fügen Sie folgende Codes hinzu:

http {
        client_max_body_size 100M;
}

Fügen Sie dann die folgenden Zeilen in die PHP-Konfigurationsdatei ein ( php.ini)

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

Fügen Sie folgende Codes hinzu:

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

1
Ich habe meine nginx.confDatei wie angewiesen geöffnet , aber sie war leer! Ich hatte das nicht erwartet, aber als ich Ihren Code hinzufügte, funktionierte es immer noch ... wie ich es erwarten würde, aber aus irgendeinem Grund war ich es nicht und ich war sehr glücklich, als es geschah!
Andrew Fox

8

Bitte geben Sie die Domain-Nginx-Datei ein:

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

Hinzufügen, um diesen Code abzulegen

client_max_body_size 24000M;

Wenn Sie eine Fehlermeldung erhalten, verwenden Sie diesen Befehl

nginx -t

8

Ich füge die Änderungen direkt zu meinem virtuellen Host hinzu, stattdessen die globale Konfiguration von nginx wie folgt:

   server {
     client_max_body_size 100M;
     ...
   }

Und dann ändere ich die Parameter in php.ini, wie die obigen Kommentare:

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

und was Sie nicht vergessen können, ist, nginx und php-fpm neu zu starten, in Centos 7 ist wie folgt:

  systemctl restart nginx
  systemctl restart php-fpm

6
sudo nano /etc/nginx/nginx.conf

Fügen Sie dann eine Zeile in den http-Abschnitt ein

http {
    client_max_body_size 100M;
}

benutze nicht nur MB M.

systemctl restart nginx

dann für PHP-Standort

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

Für heutige Tage maximal PHP 7.0 oder höher verwenden

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

Überprüfen Sie diejenigen, die durch Ihren Wunsch zunehmen.

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

starte php-fpm neu

service php-fpm restart 

4

Angenommen, Sie haben die erforderlichen Änderungen in Ihren php.ini-Dateien vorgenommen:

Sie können das Problem beheben, indem Sie die folgende Zeile in Ihre Datei nginx.conf einfügen, die sich im folgenden Pfad befindet:

/etc/nginx/nginx.conf

Bearbeiten Sie dann die Datei mit dem vim-Texteditor wie folgt:

vi /etc/nginx/nginx.conf

und fügen Sie client_max_body_size mit einem ausreichend großen Wert hinzu, zum Beispiel:

client_max_body_size 20MB;

Stellen Sie danach sicher, dass Sie mit :xioder speichern:wq

Und dann starten Sie Ihren Nginx neu.

Das ist es.

Arbeitete für mich, hoffe das hilft.


2

Ich habe den Upload mit den obigen Änderungen arbeiten lassen. Aber als ich die Änderungen vornahm, bekam ich beim Hochladen von Dateien eine 404-Antwort, die mich zum weiteren Debuggen veranlasste und durch Überprüfen von nginx error.log herausfand, dass es sich um ein Berechtigungsproblem handelt

Lösung:

Überprüfen Sie den aktuellen Benutzer- und Gruppenbesitz in / var / lib / nginx.

$ ls -ld /var/lib/nginx

drwx ------. 3 nginx nginx 17 Okt 5 19:31 / var / lib / nginx

Dies weist darauf hin, dass ein möglicherweise nicht vorhandener Benutzer und eine Gruppe mit dem Namen nginx diesen Ordner besitzt. Dies verhindert das Hochladen von Dateien.

In meinem Fall war der in "/etc/nginx/nginx.conf" erwähnte Benutzername

user vagrant; 

Ändern Sie in diesem Fall den Ordnerbesitz in den in nginx.conf definierten Benutzer vagrant.

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

Stellen Sie sicher, dass es sich tatsächlich geändert hat.

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

Laden Sie Nginx und PHP-Fpm neu, um sicheres Sade zu erreichen.

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

Der Fehler "Berechtigung verweigert" sollte jetzt verschwinden. Überprüfen Sie das error.log (basierend auf dem Speicherort von nginx.conf error_log).

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

0

Datei öffnen /etc/nginx/nginx.conf Hinzufügen oder ändernclient_max_body_size 0;


0

Verwenden:

php -i

Befehl oder hinzufügen:

phpinfo();

um den Speicherort der Konfigurationsdatei zu erhalten.

Aktualisieren Sie diese Variablen entsprechend Ihren Anforderungen und Ihrem Server

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

Unter Linux müssen Sie den Dienst nginx / apache und phpfpm neu starten, damit die neuen INI-Einstellungen geladen werden. Unter xampp und Verstärkern können Sie diese über das mit solchen Anwendungen gelieferte Bedienfeld neu starten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.