WordPress medya yüklenmiyor hatası çok kritik bir hatadır, WordPress medya yüklenmiyor hatasını aldığınızda profesyonel yardım almadan bizim makalemizi okumanızı tavsiye ediyoruz eğer hala yapamıyorsanuz beceriksiz değilsiniz işi ehline bırakın 🙂
WordPress’te “Medya Ekle” deyip resim yükleyememek, özellikle yoğun içerik girilen sitelerde sinir bozucu bir arızadır. Kullanıcı tarafında görünen mesaj genelde aynıdır: “HTTP error” veya “Yükleme başarısız”. Bu hata tek bir şeye işaret etmez; çoğu zaman altyapı ile WordPress arasındaki bir zincir kopmuştur. Pratikte en sık üç sebep çıkar: dosya izinleri/sahiplik, PHP upload limitleri, güvenlik katmanı (WAF, mod_security, hotlink/CDN kuralları).
WordPress medya yüklenmiyor Bu yazıda olayı “tahmin”le değil, disiplinle çözeceğiz. Doğru sıra şudur: önce permissions/owner kontrolü, sonra PHP limitleri (upload_max_filesize/post_max_size), en son güvenlik katmanı ve hotlink/CDN kuralları. Ayrıca performans tarafında şunu net söyleyeyim: yanlış yapılan Web Site Hızlandırma medya yüklemeyi bozabilir (özellikle CDN/hotlink kuralları ve cache ayarları). Doğru yapılan Web Site Hızlandırma ise yüklemeyi bozmaz; hatta medya servis hızını artırır.

WordPress medya yüklenmiyor Belirtiler: Hata tam olarak nerede görünüyor?
1) WordPress Medya Kütüphanesi yükleme ekranında “HTTP error”
En klasik senaryo. Yükleme başlar gibi olur, sonra HTTP error döner. Çoğu zaman arka planda 403/500/413 gibi bir sunucu yanıtı vardır.
2) Yükleniyor gibi görünüyor ama dosya oluşmuyor
Bu genelde izin/sahiplik veya güvenlik katmanı engeline işaret eder. WordPress dosyayı yazamaz, işlem yarıda kalır.
3) Sadece büyük dosyalarda patlıyor
%90 ihtimalle upload limitleri veya web server limitleri (Nginx client_max_body_size gibi) devrededir.
4) Bazı kullanıcılar yükleyebiliyor, bazıları yükleyemiyor
Rol yetkileri, güvenlik eklentisi kuralları veya hosting tarafında kullanıcı bazlı kısıtlar olabilir. Ayrıca tarayıcı/eklentiler de etkiler ama önce sunucu tarafını elemek gerekir.
Doğru sıra: İlk kontrol protokolü (en hızlı çözüm yolu)
Adım 1: permissions/owner kontrolü (uploads yazılabilir mi?)
WordPress medya yüklenmiyor WordPress medya dosyalarını wp-content/uploads altına yazar. Bu klasör yazılabilir değilse veya sahiplik (owner) yanlışsa yükleme patlar. Shared hostinglerde bazen FTP ile yüklenen dosyalar farklı kullanıcıya ait olur, sonra WordPress yazamaz.
Sunucuda (SSH) hızlı kontrol:
ls -la wp-content | head -n 20
ls -la wp-content/uploads | head -n 20
Doğru genel prensip: klasörler 755, dosyalar 644. Sahiplik web sunucusunun çalıştığı kullanıcı ile uyumlu olmalı. Aşırı yetki (777) “çözüm” değildir; güvenlik açığıdır.
İzinleri toparlamak için (dikkatli kullan):
find wp-content/uploads -type d -exec chmod 755 {} \;
find wp-content/uploads -type f -exec chmod 644 {} \;
Sahiplik düzeltme (hosting yapısına göre değişir, yanlış kullanıcıya chown yapmak siteyi bozabilir; bu yüzden kendi hosting kullanıcı adını ve web sunucu kullanıcı modelini bilerek uygula):
chown -R KULLANICI:GRUP wp-content/uploads
Burada amaç net: uploads klasörü WordPress tarafından yazılabilir olacak. Bu adım çözmezse, ikinci adıma geç.
Adım 2: PHP upload limitleri (upload_max_filesize / post_max_size / memory_limit)
“HTTP error upload” şikâyetlerinde ikinci büyük kaynak limitlerdir. WordPress yükleme isteği aslında bir POST isteğidir. Dosya boyutu post_max_size’ı aşarsa, işlem daha WordPress’e gelmeden kesilir. upload_max_filesize küçükse dosya alınmaz. memory_limit düşükse resim işleme (özellikle büyük JPEG/PNG) sırasında PHP ölür.
Kontrol edilmesi gereken temel değerler:
1) upload_max_filesize
2) post_max_size (daima upload_max_filesize’dan büyük olmalı)
3) memory_limit
4) max_execution_time
5) max_input_time
PHP değerlerini hızlı görmek için WordPress’te Site Sağlığı ekranı işe yarar. Sunucuda ise:
php -i | grep -E "upload_max_filesize|post_max_size|memory_limit|max_execution_time|max_input_time"
wp-config.php üzerinden memory limit zorlamak (her host bunu kabul etmeyebilir):
<?php
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
.user.ini (bazı hostinglerde çalışır) örnek:
upload_max_filesize=64M
post_max_size=64M
memory_limit=256M
max_execution_time=300
max_input_time=300
Not: post_max_size genelde upload_max_filesize ile aynı ya da daha büyük seçilir. Form alanları ve ek veriler de POST içinde olduğu için “eşit” yapmak bazen sınırda kalır. Ben pratikte post_max_size’ı biraz daha yüksek tutarım.
Adım 3: Web server limitleri (Nginx/Apache katmanı)
WordPress medya yüklenmiyor PHP limitlerini artırıp yine büyük dosyada patlıyorsa, web server tarafında limit vardır. Nginx kullanıyorsan client_max_body_size düşük olabilir. Bu durumda tarayıcı 413 (Payload Too Large) döndürür, WordPress “HTTP error” gibi genel bir mesaj gösterebilir.
Nginx için örnek (server veya http bloğuna):
client_max_body_size 64m;
Apache tarafında LimitRequestBody benzeri kısıtlar olabilir ama en yaygın olanı WAF/mod_security kesmesidir (bir sonraki adım).
Adım 4: Güvenlik katmanı (WAF, mod_security, güvenlik eklentileri)
Birçok “http error upload” vakasında suçlu güvenlik katmanıdır. mod_security belirli dosya imzalarını veya request yapısını şüpheli görüp 403 döner. Güvenlik eklentisi medya yüklemeyi “potansiyel risk” diye engelleyebilir. Cloud tabanlı WAF, özellikle belirli dosya adlarında veya belirli mime türlerinde blok koyabilir.
Bu adımda yapılacak pratik test:
1) Güvenlik eklentisini kısa süreliğine devre dışı bırakıp yüklemeyi dene
2) WAF loglarını kontrol et (403 görüyor musun?)
3) Hosting panelinde mod_security log/ayar varsa bak
Çözüm genelde “istisna tanımlamak”tır: /wp-admin/async-upload.php ve /wp-admin/admin-ajax.php üzerinden gelen medya yükleme istekleri için kural gevşetmek gerekebilir.
CDN / hotlink kuralları: Yükleme oluyor ama görüntüleme bozuluyor mu?
Senin kontrol listende “hotlink/CDN kuralları” var; bu doğru, ama burada kritik ayrım şu: Bazı sitelerde upload aslında olur, dosya uploads klasörüne yazılır; fakat görüntüleme tarafında CDN/hotlink kuralı yüzünden resim 403 verir. Kullanıcı “yüklenmedi” zanneder. Bu yüzden upload sonrası dosyanın gerçekten oluşup oluşmadığını kontrol et.
Hotlink koruması yanlış yapılandırma
Hotlink koruması, dış sitelerin görselini çekmesini engellemek içindir. Ama yanlış yapılandırılırsa kendi sitenin alt alan adından (cdn.domain.com) çağırdığı görseli bile engeller. Sonuç: medya kırık görünür.
CDN “Cache Everything” ve yanlış bypass
CDN tarafında agresif kural, wp-admin ve uploads üzerinde beklenmedik etkiler üretebilir. wp-admin kesinlikle cache’lenmez. uploads ise cache’lenebilir ama upload endpointleri ve yetkili erişim süreçleri doğru ele alınmalı.
Burada açık tavrım şu: Yanlış yapılan Web Site Hızlandırma uğruna uploads erişimini kilitlemeyin. Doğru Web Site Hızlandırma medya servisinde hız kazandırır, yüklemeyi bozmaz.
Ek pratik teşhis: WordPress resim işleme (Imagick/GD) kaynaklı hatalar
Bazen upload olur ama WordPress görselin küçük boyutlarını üretirken patlar. Özellikle çok büyük çözünürlüklü JPEG/PNG dosyalarında Imagick bellek tüketir, işlem yarıda kesilir. Belirti: dosya oluşur ama medya kütüphanesinde “işlenemedi” veya genel hata görülür.
Bu durumda iki şey işe yarar:
1) memory_limit artırmak
2) görseli yüklemeden önce optimize etmek (boyut/çözünürlük küçültmek)
İçerik disiplini olarak da şunu öneririm: 6000px genişliğinde görseli WordPress’e “ham” basmak gereksizdir. Hem depolama hem işlem yükü artar. Bu, Web Site Hızlandırma tarafında da maliyet üretir.
Hızlı teşhis ağacı: 10 dakikada doğru hedefi bul
Senaryo A: Küçük dosya da yüklenmiyor
Önce permissions/owner. Sonra güvenlik katmanı (403). Sonra sunucu hata logları.
Senaryo B: Küçük dosya yükleniyor, büyük dosya patlıyor
PHP limitleri + Nginx/Apache limitleri. 413/500 izleri aranır.
Senaryo C: Yükleme oluyor ama görsel görünmüyor
Hotlink/CDN kuralları. uploads URL’leri 403 veriyor mu kontrol edilir.
Senaryo D: Dosya oluşuyor ama thumbnail üretimi patlıyor
memory_limit, Imagick/GD, büyük çözünürlük kaynaklı işlem hataları.
Log kontrolü: “HTTP error”un arkasındaki gerçek kodu yakala
WordPress’in “HTTP error” mesajı geneldir. Gerçek kodu görmek için tarayıcı geliştirici araçlarında Network sekmesine bak. async-upload.php isteğinin yanıt kodu 403 mü 500 mü 413 mü? Bu kod seni doğrudan doğru katmana götürür.
Sunucu loglarında da eş zamanlı bakmak gerekir. Örneğin Nginx error log, Apache error log veya hosting panel logları. 403 ise WAF, 413 ise body size, 500 ise PHP fatal olasılığı yükselir.
Uygulama sırası: Tek sayfada kontrol listesi
1) uploads yazılabilir mi? permissions/owner kontrol et
2) upload_max_filesize, post_max_size, memory_limit değerlerini kontrol et ve artır
3) Web server limitlerini kontrol et (özellikle Nginx client_max_body_size)
4) Güvenlik katmanını ele: mod_security/WAF/güvenlik eklentisi 403 üretiyor mu?
5) CDN/hotlink kurallarını doğrula: uploads erişimi engelleniyor mu?
6) Büyük görsellerde işleme hatası varsa (Imagick/GD) bellek ve görsel boyutunu düzenle
Bu sıra bozulmaz. Çünkü doğru sırayla ilerlediğinde “wordpress resim yüklenmiyor” ve “http error upload” problemlerinin neredeyse tamamı ya izin/sahiplikte, ya limitlerde, ya da güvenlik katmanında yakalanır. Sonrasında kontrollü Web Site Hızlandırma ile medya servis hızını artırırsın; ama upload akışını bozmadan.