413 Varlık Çok Büyük Talep - Dosya Yükleme Sorunu


97

Sunucuma 30MB dosya yüklemeye çalışıyorum ve çalışmıyor.

  1. 30MB dosya yüklediğimde sayfa " Sayfa Bulunamadı " ı yüklüyor

  2. 3MB'lık bir dosya yüklediğimde, nginx / 0.6.32 ile " 413 Request Entity Too Large " mesajı alıyorum

" Client_max_body_size " değerini artırmak için nginx'i bulmaya çalışıyorum ama sunucumda kurulu nginx'i bulamıyorum. Koşmayı bile denedim:

vi /etc/nginx/nginx.conf

veya

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

yapılandırma dosyasının var olup olmadığını kontrol etmek için, ancak sunucumda bulamadım.

Bu sorunu çözmenin bir yolu var mı? Veya sunucuma nginx kurmam gerekiyor mu?

DÜZENLE:

Php.ini dosyalarımda gerekli tüm değişiklikleri yaptım,

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

Teşekkürler Raju


lütfen bu bağlantılara bakın belki size yardımcı olabilir cyberciti.biz/faq/… rtcamp.com/tutorials/php/increase-file-upload-size-limit
Ashouri

Merhaba Mohammad, nginx'i aradım ama sunucumda bulamadım. Ben neden Nginx ait bir hata mesajı alıyorum ait karıştı bu yüzden emin, nginx isnt benim sunucuda yüklü am
Raju VISHWAS

Öncelikle ngix'in sunucunuzda kurulu olmadığından emin olmalısınız, ancak tamamen eminseniz, belki de güvenlik nedeniyle kafa karıştırıcı bilgisayar korsanları için bazı sunucu yöneticileri bu numarayı kullanıyor
Ashouri

ps aux | grep nginxçalışıp çalışmadığını görmek için denedin mi?
rpkamp

Denedin which nginxmi Bu size yapılandırma dosyasının değil yürütülebilir dosyanın konumunu verecektir, ancak en azından nginx'in kurulu olup olmadığını onaylamalıdır.
Doug McLean

Yanıtlar:


119

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

Nginx'in conf dosyasını düzenleyin:

nano /etc/nginx/nginx.conf

Http bölümüne bir satır ekleyin:

http {
    client_max_body_size 100M;
}

MB kullanmayın, işe yaramaz, sadece M!

Ayrıca nginx'i yeniden başlatmayı unutmayın

systemctl restart nginx

Bunu yaptığımda 413'üm 404'e dönüşüyor. EC2'de Amazon Linux kullanıyorum. Ayrıca nginx belgesi küçük harfli 'm' gösterir. nginx.org/en/docs/http/…
nu everest

Dosyayı değiştirmek için bir parola istiyor. Ama bir tane ayarladığını hatırlamıyorum. Bir şey mi kaçırıyorum?
Sooraj

1
Nano için yol nano /etc/nginx/nginx.conf olmalıdır.
MaXi32

Benim için çalıştı ama NOT: Yapılandırmanızda zaten bir http { }bölüm varsa, geri kalanını bunun içine ekleyin! Yeni bir http {}bölüm eklemek başarısız olur ve "http" directive is duplicateNginx günlüğünde bir hata verir .
jerclarke

42

-in php.ini (/etc/php.ini içinde)

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

-in nginx.conf (içinde / opt / nginx / conf)

client_max_body_size 24000M

Benim durumum için çalışıyor


Merhaba Arun, sunucumuzla ilgili sorun şu ki, nginx'in yüklü olduğunu bulamıyorum ama yine de nginx hatası veriyor
Raju Vishwas

nginx'i / opt veya / etc içinde bulun. Nginx'in içinde conf klasörünü ve ardından nginx.conf'u bulun.
Arun

Yukarıdaki fikir işe yaramazsa, herhangi bir arama aracıyla tüm Linux içinde nginx.conf dosyasını arayın.
Arun

`max_input_time = 24000`, 24000 milisaniye cinsinden mi?
Rishabh Agrahari

1
@RishabhAgrahari Saniye! Bu, maksimum süreyi saniye cinsinden ayarlar. Varsayılan ayar -1'dir, yani bunun yerine max_execution_time kullanılır. Sınırsız süreye izin vermek için 0 olarak ayarlayın
Sean

18

Önce Nginx yapılandırma dosyasını ( nginx.conf) düzenleyin

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

Aşağıdaki kodları ekleyin:

http {
        client_max_body_size 100M;
}

Ardından PHP yapılandırma dosyasına ( php.ini) aşağıdaki satırları ekleyin

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

Aşağıdaki kodları ekleyin:

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

1
Dosyamı belirtildiği gibi açtım nginx.conf, ancak boştu! Bunu beklemiyordum, ama kodunuzu eklediğimde hala işe yaradı ... tahmin ettiğim gibi, ama bir nedenden ötürü değildim ve yaptığında çok mutlu oldum!
Andrew Fox

8

Lütfen etki alanı nginx dosyasını girin:

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

Bu kodu dosyaya ekleyin

client_max_body_size 24000M;

Hata alırsanız bu komutu kullanın

nginx -t

8

Değişiklikleri doğrudan nginx'in global yapılandırması yerine sanal ana makineme ekliyorum, şöyle:

   server {
     client_max_body_size 100M;
     ...
   }

Ve sonra yukarıdaki yorumlar gibi php.ini'deki parametreleri değiştiriyorum:

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

ve unutamayacağınız şey nginx ve php-fpm'yi yeniden başlatmaktır, centos 7'de şöyle:

  systemctl restart nginx
  systemctl restart php-fpm

6
sudo nano /etc/nginx/nginx.conf

Ardından http bölümüne bir satır ekleyin

http {
    client_max_body_size 100M;
}

sadece MB kullanma M.

systemctl restart nginx

sonra php konumu için

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

günümüz için maksimum php 7.0 veya üstü kullanın

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

arzunuzla artanları kontrol edin.

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

php-fpm'yi yeniden başlat

service php-fpm restart 

4

Php.ini dosyalarınızda gerekli değişiklikleri yaptığınızı varsayarak:

Aşağıdaki yolda bulunan nginx.conf dosyanıza aşağıdaki satırı ekleyerek sorunu çözebilirsiniz:

/etc/nginx/nginx.conf

ardından dosyayı vim metin düzenleyicisini kullanarak aşağıdaki gibi düzenleyin:

vi /etc/nginx/nginx.conf

ve yeterince büyük bir değerle client_max_body_size ekleyin, örneğin:

client_max_body_size 20MB;

Bundan sonra :xiveya kullanarak kaydettiğinizden emin olun.:wq

Ve sonra nginx'inizi yeniden başlatın.

Bu kadar.

Benim için çalıştı, umarım bu yardımcı olur.


2

Yüklemeyi yukarıdaki değişikliklerle çalıştırdım. Ancak değişiklikleri yaptığımda, dosya yüklemede 404 yanıtı almaya başladım, bu da beni daha fazla hata ayıklama yapmaya yönlendirdi ve nginx error.log'u kontrol ederek bunun bir izin sorunu olduğunu anladım.

Çözüm:

/ Var / lib / nginx üzerinde mevcut kullanıcı ve grup sahipliğini kontrol edin.

$ ls -ld /var/lib/nginx

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

Bu, muhtemelen var olmayan bir kullanıcının ve nginx adlı grubun bu klasörün sahibi olduğunu söyler. Bu dosya yüklenmesini engelliyor.

Benim durumumda, "/etc/nginx/nginx.conf" içinde belirtilen kullanıcı adı

user vagrant; 

Klasör sahipliğini nginx.conf dosyasında tanımlanan kullanıcı olarak değiştirin, bu durumda vagrant.

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

Gerçekte değiştiğini doğrulayın.

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

Daha güvenli sade için nginx ve php-fpm'yi yeniden yükleyin.

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

İzin verilmedi hatası artık ortadan kalkmalıdır. Error.log dosyasını kontrol edin (nginx.conf error_log konumuna göre).

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

0

Dosyayı aç /etc/nginx/nginx.conf Ekle veya değiştirclient_max_body_size 0;


0

Kullanım:

php -i

komut verin veya ekleyin:

phpinfo();

yapılandırma dosyasının yerini almak için.

Bu değişkenleri ihtiyacınıza ve sunucunuza göre güncelleyin

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

Linux'ta, yeni ini ayarlarının yüklenmesi için nginx / apache ve phpfpm hizmetini yeniden başlatmanız gerekecektir. Xampp, ammps'de bu tür uygulamalarla birlikte gelen kontrol panelinden bunları yeniden başlatabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.