Nginx 413 request entity too large sorunu

Yüksek boyutlu dosya yüklemelerinde bu hatayı almanız olası bir durumdur. Test sunucusu centos 7 ve plesk obsidian 18.0.33 sürümünde yapılmaktadır.
Aşağıdaki adımları sırasıyla yapmamız gerekiyor.

İlk olarak ana nginx.conf dosyasında düzenleme yapacağız.
nano /etc/nginx/nginx.conf

Dosyayı açtıktan sonra aşağıdaki gibi bir bölüm göreceksiniz. Eğer daha önce client_max_body_size değeri eklenmiş ise bunu istediğimiz boyut yapalım eklenmemiş ise biz ekleyim. İşlem yaptıktan sonra kayıt edip service nginx restart diyoruz.

http {
##
# Basic Settings
##
client_max_body_size 250M;


}

Şimdi php.ini dosyasında gerekli ayarları yapacağız. Bu işlemi plesk panel üzerinden PHP Ayarları bölümünden de yapabilirsiniz.

memory_limit, max_execution_time, max_input_time, post_max_size, upload_max_filesize değerlerini istediğimiz sayıları vererek değiştiriyoruz.

Php değişiklerin olup/olmadığının kontrolü için bir php dosyasına phpinfo() yazıp test edebilirsiniz.

Bu işlemleri yaptıktan sonra tekrar yüklemeyi deneyiniz eğer olmaz ise aşağıdaki adımı yapabilirsiniz.

cd /var/www/vhosts/system/ içine girelim. Burada domain adınızla aynı olan klasörün içine giriniz. conf dizinine giriniz.

nano nginx.conf diyerek yerel nginx.conf dosyamızı açalım

Burada client_max_body_size değerini bulup istediğimiz sayısı veriyoruz.

service nginx restart diyelim.

PHP ajax istek doğrulaması

Sitedeki ajax isteklerine önlem alınmaz ise adres çubuğuna yazarak istekte bulunulabilir. Bu gibi durumlar bazen çok sıkıcı olabilir. Ancak php’de bunun içinde düşünülen bir parametre bulunmaktadır. Önemli bir nokta bazı js kütüphaneleri ajax istediğinde HTTP_X_REQUESTED_WITH değerini göndermiyor. Kullandığınız kütüphaneye göre bu fonksiyonu kullanabilirsiniz. En çok kullanılan jquery kütüphanesi desteklemektedir. Aşağıdaki kodu ajax istediğinin yapıldığı sayfaya ekleyerek kontrol sağlayabilirsiniz. HTTP_X_REQUESTED_WITH parametresi isteğin yapılıp yapılmadığına göre 1 yada 0 değerini döndürmektedir.

 


function isXmlHttpRequest(){
    $header = isset($_SERVER['HTTP_X_REQUESTED_WITH']) ? $_SERVER['HTTP_X_REQUESTED_WITH'] : null;
    return ($header === 'XMLHttpRequest');
}


if(!isXmlHttpRequest()){
    echo 'Ajax isteği gönderilmedi';
}else{
    echo 'Ajax isteği gönderildi';
}

PHP dosyalarda gereksiz boşluk

Tam bir başlık bulamadım. Ama sorunu yaşayan arkadaşlar ne demek istediğimi bilecektir. Özellikle ftp’de dosya üzerinde işlem yapıp kaydettikten sonra sayfa içinde kodlar arasında görünmeyen ama site arayüzüne etki eden boşluk oluşmaktadır. Dosyayı Notepad++ editöründe açtıktan sonra Encoding (Kodlama) menüsünden Encode in UTF-8 without BOM (UTF-8 bomsuz olarak) seçeneğini seçip dosyayı ftp’ye yükleyiniz.