413 ขอเอนทิตีใหญ่เกินไป - ปัญหาการอัปโหลดไฟล์


97

ฉันพยายามอัปโหลดไฟล์ 30MB บนเซิร์ฟเวอร์ของฉันและไม่ทำงาน

  1. เมื่อฉันอัปโหลดไฟล์ 30MB หน้าเว็บจะโหลด " ไม่พบหน้า "

  2. เมื่อฉันอัปโหลดไฟล์ 3MB ฉันจะได้รับ " 413 Request Entity Too Large " พร้อม nginx / 0.6.32

ฉันกำลังพยายามค้นหา nginx เพื่อเพิ่ม " client_max_body_size " แต่ฉันไม่พบ nginx ที่ติดตั้งบนเซิร์ฟเวอร์ของฉัน ฉันยังลองวิ่ง:

vi /etc/nginx/nginx.conf

หรือ

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

เพื่อตรวจสอบว่ามีไฟล์ config อยู่หรือไม่ แต่ฉันไม่พบไฟล์นั้นบนเซิร์ฟเวอร์ของฉัน

มีวิธีแก้ไขปัญหานี้หรือไม่ หรือฉันต้องติดตั้ง nginx บนเซิร์ฟเวอร์ของฉัน

แก้ไข:

ฉันได้ทำการเปลี่ยนแปลงที่จำเป็นทั้งหมดในไฟล์ php.ini ของฉัน

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

ขอบคุณ Raju


โปรดดูที่การเชื่อมโยงนี้อาจจะช่วยให้คุณcyberciti.biz/faq/... rtcamp.com/tutorials/php/increase-file-upload-size-limit
Ashouri

สวัสดีโมฮัมหมัดฉันมองหา nginx แต่ไม่พบบนเซิร์ฟเวอร์ของฉัน ฉันแน่ใจว่า nginx ไม่ได้ติดตั้งบนเซิร์ฟเวอร์ของฉันดังนั้นฉันจึงสับสนว่าทำไมฉันถึงได้รับข้อความแสดงข้อผิดพลาดซึ่งเป็นของ Nginx
Raju Vishwas

ก่อนอื่นคุณต้องแน่ใจว่าไม่ได้ติดตั้ง ngix บนเซิร์ฟเวอร์ของคุณ แต่ถ้าคุณแน่ใจอย่างสมบูรณ์อาจเป็นเพราะเหตุผลด้านความปลอดภัยผู้จัดการเซิร์ฟเวอร์บางคนที่ทำให้แฮกเกอร์สับสนใช้เคล็ดลับนี้
Ashouri

คุณได้ลองps aux | grep nginxดูว่าทำงานอยู่หรือไม่?
rpkamp

คุณลองwhich nginxหรือยัง? ซึ่งจะให้ตำแหน่งของไฟล์ปฏิบัติการไม่ใช่ไฟล์ config แต่อย่างน้อยควรยืนยันว่าติดตั้ง nginx แล้ว
Doug McLean

คำตอบ:


119

ที่มา: http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/

แก้ไขไฟล์ conf ของ 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/th/docs/http/…
nu everest

มันกำลังขอรหัสผ่านเพื่อเปลี่ยนไฟล์ แต่ฉันจำไม่ได้ว่าตั้งไว้ ฉันพลาดอะไรไปรึเปล่า?
Sooraj

1
เส้นทางสำหรับนาโนควรเป็น 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
Raju Vishwas

ค้นหา nginx ภายใน / opt หรือ / etc ภายใน nginx ค้นหาโฟลเดอร์ conf จากนั้น nginx.conf
อรุณ

หากแนวคิดข้างต้นใช้ไม่ได้ผลให้ค้นหา nginx.conf ภายใน Linux ทั้งหมดโดยใช้เครื่องมือค้นหาใด ๆ
อรุณ

`max_input_time = 24000`, 24000 เป็นมิลลิวินาที?
Rishabh Agrahari

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ไฟล์ตามคำสั่ง แต่มันว่างเปล่า! ฉันไม่ได้คาดหวังอย่างนั้น แต่เมื่อฉันเพิ่มรหัสของคุณมันก็ยังใช้งานได้ ... อย่างที่ฉันเดาว่าใคร ๆ ก็คาดหวัง แต่ด้วยเหตุผลบางอย่างฉันไม่ได้และฉันก็มีความสุขมากเมื่อได้ทำ!
Andrew Fox

8

โปรดป้อนไฟล์โดเมน nginx:

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

เพิ่มในไฟล์รหัสนี้

client_max_body_size 24000M;

หากคุณได้รับข้อผิดพลาดให้ใช้คำสั่งนี้

nginx -t

8

ฉันเพิ่มการเปลี่ยนแปลงโดยตรงกับโฮสต์เสมือนของฉันแทนการกำหนดค่าส่วนกลางของ nginx เช่นนี้:

   server {
     client_max_body_size 100M;
     ...
   }

จากนั้นฉันเปลี่ยน params ใน 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 เฉพาะ M.

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 text editor ดังนี้:

vi /etc/nginx/nginx.conf

และเพิ่ม client_max_body_size ด้วยค่าที่มากพอตัวอย่างเช่น:

client_max_body_size 20MB;

หลังจากนั้นตรวจสอบให้แน่ใจว่าคุณบันทึกโดยใช้:xiหรือ:wq

จากนั้นรีสตาร์ท nginx ของคุณ

แค่นั้นแหละ.

ทำงานให้ฉันหวังว่านี่จะช่วยได้


2

ฉันได้รับการอัปโหลดที่ทำงานร่วมกับการเปลี่ยนแปลงข้างต้น แต่เมื่อฉันทำการเปลี่ยนแปลงฉันเริ่มได้รับการตอบสนอง 404 ในการอัปโหลดไฟล์ซึ่งทำให้ฉันต้องทำการดีบักเพิ่มเติมและพบปัญหาการอนุญาตโดยตรวจสอบข้อผิดพลาด nginx.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 ในกรณีนี้ vagrant

$ 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

ใช้:

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 แอมป์คุณสามารถรีสตาร์ทได้จากแผงควบคุมที่มาพร้อมกับแอปพลิเคชันดังกล่าว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.