"The uploaded file exceeds the upload_max_filesize directive in php.ini." mesajı, yüklemeye çalıştığınız dosyanın PHP'nin tek dosya için izin verdiği boyuttan büyük olduğunu söyler. PHP bu durumu UPLOAD_ERR_INI_SIZE (değeri 1) hata koduyla bildirir; WordPress de aynı cümleyi medya yükleme ekranında gösterir.

Dosya yükleme sınırı tek bir ayardan ibaret değildir: PHP tarafında upload_max_filesize, post_max_size, memory_limit ve zaman sınırları, web sunucusu tarafında ise Nginx client_max_body_size, Apache LimitRequestBody ve LiteSpeed istek gövdesi sınırı birlikte çalışır. Hangisi en küçükse o kazanır. Aşağıda hepsini sırayla ve cPanel adımlarıyla anlatıyoruz.

İlgili PHP ayarları ve varsayılanları

PHP kılavuzundaki değerler şöyledir (hosting firmanız farklı değerler kullanıyor olabilir):

AyarPHP varsayılanıNe yaparDeğiştirilebilir
upload_max_filesize2MYüklenen tek bir dosyanın en büyük boyutuINI_PERDIR
post_max_size8MPOST isteğinin toplam boyutu; dosya yüklemeyi de etkilerINI_PERDIR
memory_limit128MBetiğin kullanabileceği en fazla bellekINI_ALL
max_file_uploads20Tek istekte yüklenebilecek dosya sayısıINI_PERDIR
max_execution_time30 saniye (komut satırında 0)Betiğin en uzun çalışma süresiINI_ALL
max_input_time-1 (max_execution_time kullanılır)POST ve GET gibi girdilerin ayrıştırılma süresiINI_PERDIR

PHP kılavuzu üç ayar arasındaki ilişkiyi açıkça yazar: büyük dosya yükleyebilmek için post_max_size değeri upload_max_filesize değerinden büyük olmalıdır; genel olarak memory_limit de post_max_size değerinden büyük olmalıdır. INI_PERDIR türündeki ayarlar ini_set() ile çalışma anında değiştirilemez; php.ini, .user.ini veya (uygun kurulumda) .htaccess ile değiştirilir. Bu nedenle bir eklentinin "yükleme sınırını artırma" düğmesi çoğu zaman işe yaramaz.

Ziyaretçiyseniz veya içerik yükleyen kullanıcıysanız

Ziyaretçiyseniz veya içerik yükleyen kullanıcıysanız: Dosyayı küçültün, Büyük dosyaları tek seferde değil, birkaç parça hâlinde yükleyin. Aynı istekte..., Bağlantınız yavaşsa...
  • Dosyayı küçültün: görselleri yüklemeden önce yeniden boyutlandırın veya sıkıştırın, PDF'leri küçültün, videoları sıkıştırın.
  • Büyük dosyaları tek seferde değil, birkaç parça hâlinde yükleyin. Aynı istekte çok sayıda dosya göndermek post_max_size sınırını doldurabilir.
  • Bağlantınız yavaşsa yükleme süre sınırına takılabilir; daha hızlı bir ağ deneyin.
  • Sorun devam ederse site yöneticisine dosya boyutunu ve gördüğünüz mesajı iletin.

Site sahibiyseniz: önce sınırı görün

WordPress'te Medya menüsündeki yeni dosya ekleme ekranında, yükleme alanının altında "Maximum upload file size: X MB." (Türkçe arayüzde "Yüklenebilecek en büyük dosya boyutu: X MB.") yazar. WordPress bu değeri wp_max_upload_size() fonksiyonuyla hesaplar: upload_max_filesize ve post_max_size değerlerinden küçük olanı alır ve upload_size_limit filtresinden geçirir.

Daha ayrıntılı görünüm için Araçlar > Site Sağlığı > Bilgi sekmesindeki Media handling bölümüne bakın. Burada "Max size of post data allowed", "Max size of an uploaded file", ikisinin küçüğü olan "Max effective file size" ve "Max number of files allowed" değerleri listelenir. WordPress dışında phpinfo() çıktısındaki Local Value sütununa da bakabilirsiniz; kontrolden sonra phpinfo dosyasını silmeyi unutmayın.

cPanel MultiPHP INI Editor ile sınırı artırma

  • cPanel'de Software bölümündeki MultiPHP INI Editor arayüzünü açın.
  • Basic Mode sekmesinde konum menüsünden Home Directory (tüm siteler) veya ilgili alan adını seçin.
  • upload_max_filesize değerini ihtiyacınıza göre (örneğin 64M), post_max_size değerini bundan biraz büyük (örneğin 72M) yapın; gerekirse memory_limit, max_execution_time ve max_input_time değerlerini de gözden geçirin.
  • Apply düğmesine basın ve Medya menüsündeki dosya ekleme ekranında yeni sınırı kontrol edin.

cPanel belgelerine göre ayarlar, desteklenen ölçüde php.ini, .user.ini ve .htaccess dosyalarına yazılır. Editor Mode sekmesi dosyayı doğrudan düzenlemenizi sağlar; ancak belgeler bunun yalnızca deneyimli kullanıcılar için olduğunu ve hatalı bir satırın PHP betiklerini bozabileceğini belirtir. Basic Mode yeterlidir.

Bu adımda wp-config.php, .htaccess veya veritabanı üzerinde değişiklik yapacaksanız önce yedek alın. Dosyayı kendi bilgisayarınıza indirmek ya da cPanel Dosya Yöneticisi ile bir kopyasını oluşturmak yeterlidir; veritabanı için phpMyAdmin dışa aktarma veya panelinizin yedek aracını kullanın.

php.ini, .user.ini ve .htaccess ile

Kendi sunucunuzda ana php.ini dosyasını, paylaşımlı hostingde ise site kökündeki .user.ini dosyasını kullanabilirsiniz. .user.ini yalnızca CGI/FastCGI (PHP-FPM dahil) kurulumlarında okunur ve varsayılan olarak beş dakikada bir yenilenir.

ini
; php.ini veya public_html/.user.ini
upload_max_filesize = 64M
post_max_size = 72M
memory_limit = 256M
max_execution_time = 120
max_input_time = 120

PHP Apache modülü olarak çalışıyorsa veya sunucu LiteSpeed ise aynı ayarlar .htaccess içinde verilebilir. PHP-FPM kullanan Apache sunucularında bu satırlar PHP'ye ulaşmaz ve 500 hatasına yol açabilir; orada .user.ini kullanın.

apache
# .htaccess (yalnızca mod_php veya LiteSpeed PHP için)
php_value upload_max_filesize 64M
php_value post_max_size 72M

Hangi yöntemi kullanacağınızdan emin değilseniz önce MultiPHP INI Editor'ı deneyin; cPanel doğru dosyayı kendisi seçer. Ayrıntılar için PHP memory limit rehberimizdeki işleyici açıklamasına ve PHP-FPM yapılandırma yazımıza bakabilirsiniz.

Web sunucusu sınırları: Nginx, Apache ve LiteSpeed

Web sunucusu sınırları: Nginx, Apache ve LiteSpeed: Nginx: client_max_body_size, Apache: LimitRequestBody, LiteSpeed

PHP sınırlarını artırdığınız hâlde büyük dosyalar yüklenmiyorsa istek PHP'ye hiç ulaşmadan web sunucusunda reddediliyor olabilir. Bu durumda tarayıcıda genellikle 413 Request Entity Too Large hatası görülür.

Nginx: client_max_body_size

Nginx belgelerine göre client_max_body_size istemci istek gövdesinin en büyük boyutunu belirler, varsayılanı 1m'dir ve http, server veya location bloğunda tanımlanabilir. İstek bu değeri aşarsa istemciye 413 (Request Entity Too Large) döner. Belgeler tarayıcıların bu hatayı doğru gösteremeyebileceğini de not eder; yani yükleme sessizce başarısız olmuş gibi görünebilir. Değeri 0 yapmak kontrolü kapatır, bu önerilmez.

nginx
server {
    server_name ornekalanadi.com;
    client_max_body_size 72m;
    # ...
}

Değişiklikten sonra yapılandırmayı sudo nginx -t ile test edip Nginx'i yeniden yükleyin. Ayrıntılar için Nginx yapılandırma rehberimize bakın.

Apache: LimitRequestBody

Apache 2.4 belgelerine göre LimitRequestBody istek gövdesinin bayt cinsinden en büyük boyutunu belirler. Varsayılan değer 1073741824 (1 GB) olup Apache 2.4.53 ve öncesinde varsayılan 0 (sınırsız) idi. Yönerge sunucu, sanal konak, dizin ve .htaccess bağlamında kullanılabilir. İstek sınırı aşarsa Apache isteği işlemek yerine hata yanıtı döndürür. Paylaşımlı hostingde bu değer genellikle PHP sınırlarından büyüktür; yine de bir .htaccess dosyasında düşük bir değer tanımlanmışsa kontrol edin.

apache
# Örnek: bu dizinde istek gövdesini 72 MB ile sınırla
LimitRequestBody 75497472

LiteSpeed

LiteSpeed belgeleri, istek gövdesinin en büyük boyutunu sanal konak düzeyinde belirlemek için MaxReqBodySize yönergesini tanımlar (belgelerdeki örnek 1024M). Bu ayar sunucu yöneticisinin alanıdır; paylaşımlı hostingde değiştiremezsiniz. Büyük yüklemeler PHP sınırlarını artırmanıza rağmen 413 hatası veriyorsa barındırma firmanıza başvurun.

Nedenler, belirtiler ve çözümler

NedenBelirtiÇözüm
upload_max_filesize düşük"The uploaded file exceeds the upload_max_filesize directive in php.ini."upload_max_filesize değerini artırın
post_max_size düşük veya upload_max_filesize'dan küçükForm boş gelir, belirgin hata yok; WordPress sınırı beklediğinizden küçük gösterirpost_max_size değerini upload_max_filesize'dan büyük yapın
Nginx client_max_body_size413 Request Entity Too Large; yükleme aniden dururİlgili server veya location bloğunda değeri artırıp yeniden yükleyin
Apache LimitRequestBody veya LiteSpeed sınırı413 veya genel hata; PHP sınırları yüksek olduğu hâlde.htaccess ve sanal konak ayarlarını kontrol edin, firmaya başvurun
Zaman aşımıBüyük dosyada uzun beklemeden sonra hatamax_execution_time ve max_input_time değerlerini gözden geçirin
Bellek yetersizYükleme sonrası görsel işlenirken "Allowed memory size" hatasımemory_limit değerini kontrol edin, görseli küçültün
Ayar uygulanmıyorSite Sağlığı eski değeri gösteriyorDoğru dosya ve PHP işleyicisi; .user.ini için beş dakika bekleyin

Sık Sorulan Sorular

upload_max_filesize'ı artırdım ama WordPress hâlâ eski sınırı gösteriyor. Neden?

WordPress upload_max_filesize ile post_max_size değerlerinden küçük olanı gösterir; post_max_size değerini de artırdığınızdan emin olun. Ayrıca değişikliği yanlış dosyaya yazmış olabilirsiniz; .user.ini kullanıyorsanız beş dakika bekleyin ve Site Sağlığı ekranından tekrar kontrol edin.

upload_max_filesize ile post_max_size arasındaki fark nedir?

upload_max_filesize tek bir dosyanın sınırıdır; post_max_size ise dosyalar ve form alanları dahil tüm isteğin sınırıdır. PHP kılavuzuna göre post_max_size, upload_max_filesize değerinden büyük olmalıdır.

413 Request Entity Too Large hatası PHP ayarlarıyla düzelir mi?

Hayır. 413 genellikle istek PHP'ye ulaşmadan web sunucusu tarafından reddedildiğinde görülür. Nginx'te client_max_body_size, Apache'de LimitRequestBody, LiteSpeed'de istek gövdesi sınırı kontrol edilmelidir. HTTP durum kodlarının genel anlamı için HTTP durum kodları yazımıza bakabilirsiniz.

Bir eklentiyle yükleme sınırını artırabilir miyim?

upload_max_filesize ve post_max_size INI_PERDIR türünde olduğu için PHP kodu içinden ini_set() ile değiştirilemez. Eklentiler ancak .htaccess veya .user.ini dosyasına yazarak etkili olabilir; bu da PHP işleyicinize bağlıdır. En güvenilir yol cPanel MultiPHP INI Editor veya barındırma firmanızdır.

Yazılım, tarayıcı ve hizmet adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen şirketlerle ortaklık ilişkisi bulunduğu anlamına gelmez.

İlgili içerikler: PHP memory limit hatası · WordPress kritik hata · Nginx yapılandırma rehberi · .htaccess rehberi · PHP-FPM yapılandırma · HTTP durum kodları