WordPress’te Dosya İzinleri: Hangi Dizin Ne Olmalı?
WordPress’te dosya ve klasör izinlerini doğru ayarlayın. public_html, wp-content, wp-config.php ve upload klasörü için net değerler.
WordPress’te dosya izinleri (file permissions), hem güvenlik hem de çalışırlık için kritik bir katmandır. Yanlış izinler yalnızca “dosya yüklenmiyor” gibi hatalara yol açmaz; aynı zamanda sunucuda gereğinden fazla erişim açarak risk büyütebilir. Bu rehberde, WordPress kurulumu için dizin bazında hangi izinlerin beklendiğini, hangi kullanıcı/çalıştırma mantığında hangi değerin doğru olduğunu ve değişiklik yaparken nasıl test edeceğinizi net bir kontrol planı ile göreceksiniz.
Not: İzin değerleri kullandığınız Linux/Unix dağıtımı, PHP-FPM kullanımı ve web sunucusunun çalıştığı kullanıcı (örn.
www-data,nginx,apache) gibi etkenlere göre küçük farklılıklar gösterebilir. Ancak aşağıdaki “hedef” değerler, WordPress dünyasında en yaygın ve güvenli varsayımlarla uyumludur.
Temel Kavramlar: UID/GID, izin bitleri ve WordPress akışı
WordPress dosya izinlerini anlamak için üç kavramı birlikte düşünmek gerekir:
- Sahip (owner) / grup (group): Dizindeki dosyaları hangi kullanıcı ve hangi grup sahiplenir.
- izin bitleri (permission): Dosya ve klasör için okuma (r), yazma (w), çalıştırma/geçme (x) yetkileri.
- Web sunucusu kullanıcı adı: PHP’nin çalıştığı kullanıcı ile dosya sistemi izinleri uyuşmazsa WordPress “yazma” işlemlerini yapamaz.
WordPress’te tipik “yazma” akışları şunlardır:
- wp-content/uploads içine görsel yükleme (upload)
- Eklenti/tema kurulumu (plugin/theme installation)
- Cache/temporary dosyaları (ör. bazı eklentilerin geçici klasörleri)
- wp-config.php içindeki ayarların okunması; doğrudan düzenlenmesi genellikle gerekli değildir
Bu nedenle her dizin aynı izne sahip olmamalıdır. Özellikle wp-content içi yazılabilir olmalı; WordPress çekirdek dosyaları (core) ise web üzerinden yazılabilir olmamalıdır.
Unix/Linux izin sayıları nasıl okunur?
- 4 = read (okuma)
- 2 = write (yazma)
- 1 = execute (çalıştırma / geçiş)
Örnek:
- 755 => owner: rwx, group: r-x, others: r-x
- 644 => owner: rw-, group: r--, others: r--
- 750 => owner: rwx, group: r-x, others: ---
WordPress’te klasörlerde “execute (x)” bitinin olmasının nedeni, klasörün içeriğinin taranabilmesidir. Dosyalarda ise genelde x gerekmez.
WordPress için net hedef izin seti (klasör/dosya bazlı)
Aşağıdaki değerler, çoğu barındırma ortamında güvenli başlangıç noktasıdır:
İzin tablosu (önerilen değerler)
| Dizin/Dosya | Tür | Hedef izin | Açıklama |
|---|---|---|---|
wp-admin/ |
klasör | 755 |
Yazma gerektirmez, sadece içerikler çekirdek olarak dağıtılır. |
wp-includes/ |
klasör | 755 |
WordPress core dosyaları. Web üzerinden yazma kapalı olmalı. |
wp-content/ |
klasör | 755 |
Klasörün kendisi yazılabilir olmak zorunda değildir; alt klasörler hedefe göre ayarlanır. |
wp-content/themes/ |
klasör | 755 |
Tema dosyaları genelde eklenti/FTP ile yüklenir; tek başına “777” yapmak yerine doğru sahiplik ve yazma izinleri uygulanır. |
wp-content/plugins/ |
klasör | 755 |
Eklenti yüklemede alt dosyalar yaratılır; doğru sahiplik ile çözülür. |
wp-content/uploads/ |
klasör | 775 (veya 755) |
Görsel yüklemeleri için yazma gerekir. Çok tutucu ortamda 755, çok paylaşımlı ortamda 775 daha pratik olur. |
wp-content/uploads/ alt klasörler |
klasör | parent ile uyumlu | Yüklenen içerikler otomatik şekilde yeni klasörler oluşturur. |
wp-content/cache/ (varsa) |
klasör | 775 |
Önbellek eklentileri yazma yapar. |
wp-config.php |
dosya | 640 (veya 600) |
Veritabanı bilgileri içerir. Web kullanıcısının okuyabildiği, başkalarının erişemediği izin idealdir. |
.htaccess |
dosya | 644 |
Apache kullanıyorsanız site yapılandırması burada olur. Genelde yazma gerekir; ihtiyaca göre geçici 664/644 ayarlanır. |
WordPress kök dizin dosyaları (örn. index.php, wp-*.php) |
dosya | 644 |
Core dosyaları yalnızca okunur olmalı. |
Kural: “Görsel yüklenmiyor” veya “tema/eklenti yüklenmiyor” hatalarında ilk adım
chmodile777yapmak değil, doğru kullanıcı/sahiplik (chown) veuploadshedefi üzerinde düzeltme yapmaktır.
Tek satırlık net kılavuz
- WordPress core (
wp-admin,wp-includes, kök PHP dosyaları):755klasör,644dosya - Yazma gereken yer:
wp-content/uploads(çoğunlukla775) - Hassas dosya:
wp-config.php(çoğunlukla640/600)
Sahiplik (chown) hataları izin hatasından daha sık çıkar
Birçok kullanıcı “izinleri verdim ama düzelmedi” durumunu yaşar. Çünkü Linux’ta izinler “kimden” geldiğine değil, dosyanın sahibine/grubuna göre çalışır.
Web sunucusu kullanıcı adını belirleme
Çalışan kullanıcıyı (örn. www-data, apache, nginx) bilmeden yalnızca chmod yapmak yetersiz kalır.
Kamuya açık olmayan sunucularda tipik yaklaşım: 1. Hosting panelinde (Plesk/cPanel veya custom) “dosya yöneticisi” kullanın. 2. Dosyaların owner ve group değerlerini kontrol edin. 3. WordPress’in web tarafından çalıştığı kullanıcı grubuna uyumlu hale getirin.
Net hedef sahiplik stratejisi
- Klasörleri ve dosyaları çoğunlukla web sunucusu kullanıcı grubuyla uyumlu yapın.
- En yaygın iki düzen:
- owner: web kullanıcı, group: web grubu
- owner: FTP kullanıcısı, group: web grubu (paneliniz bunu destekliyorsa)
Örnek komut (sadece mantık):
- chown -R www-data:www-data /path/to/wordpress
Bu komutu körlemesine tüm sunucuya uygulamayın. Eğer paylaşımlı bir ortamda farklı kullanıcılar varsa, sadece ilgili WordPress dizinini hedefleyin.
wp-config.php neden ayrı ve daha sıkı olmalı?
wp-config.php veritabanı erişim bilgilerini içerir. Bu yüzden wp-content/uploads gibi geniş yazılabilir yapmak doğru değildir.
Hedef değer seçimi
600=> owner okuyabilir/yazabilir, grup ve diğerleri erişemez640=> owner okuyabilir/yazabilir, group okuyabilir, others erişemez
WordPress’in PHP’si grup üzerinden okuyabiliyorsa 640 pratik ve güvenlidir.
Yapı bozma riski
wp-config.phpyanlış izinle644olursa herkes okuyabilir hale gelebilir.777yapmak gereksiz risk yaratır.
uploads ve cache: “Yazma gereken tek yer” mantığı
WordPress’te dosya yükleme çoğunlukla wp-content/uploads altında gerçekleşir. Bu nedenle yazma izni en çok burada anlamlıdır.
uploads için net öneri
- Klasör:
775 - Dosyalar: genellikle
664veya644(yeni yüklenen dosyaların nasıl oluştuğu ortamınıza göre değişir)
Pratik test: 1. İzinleri uyguladıktan sonra küçük bir görsel yükleyin. 2. WordPress “Media library”dan yüklenen dosyayı doğrulayın.
Cache klasörleri
Bazı önbellek eklentileri wp-content/cache/ altına yazma yapar. Bu klasör için de 775 genellikle yeterlidir.
.htaccess, otomatik yönlendirme ve izin dengesi
Apache kullanan kurulumlarda .htaccess WordPress tarafından veya eklentilerle güncellenebilir.
- İlk hedef:
644yeterli olur. - WordPress güncelleme yaparken hata alırsanız,
.htaccesssadece ilgili kullanıcı tarafından güncellenebilecek şekilde geçici düzenlenmelidir.
Net yaklaşım: .htaccess için tüm siteyi 777 yapmak yerine yalnızca .htaccess dosyasını doğru izin ve sahiplikle düzeltin.
Ortama göre doğrulama: panelden mi, SSH’den mi?
Net sonuç için yöntem fark etmez; doğrulama değişir.
SSH ile doğrulama (Linux barındırmada yaygın)
ls -lile izin ve sahipliği kontrol edin.findile problemli dosyaları ayıklayın.
Örnek mantık komutu (ödev gibi değil, yön gösterir):
- find wp-content -type d -exec chmod 755 {} \;
Bu tarz komutlar her zaman “tam hedef” değildir.
uploadsgibi yazılabilir olması gereken klasörleri ayrı ele almanız gerekir.
Panel (File Manager) ile doğrulama
Plesk/cPanel veya hosting firmasının dosya yöneticisi üzerinden:
- owner/group değişimini uygulayın
- sadece hedef klasörlerde (özellikle uploads) izinleri artırın
Yaygın hata senaryoları ve net düzeltme adımları
1) “Dosya yüklenemiyor” (Uploads yazma hatası)
Belirti: - Medya ekleme başarısız - Bazı eklentiler dosya oluşturamaz
Net düzeltme sırası:
1. wp-content/uploads klasörünün izinlerini ve owner/group’ünü kontrol edin.
2. uploads klasörü 755 ise, yazma gerektiren ortamlarda 775 ile deneyin.
3. Sadece wp-content/uploads ve gerekirse wp-content/cache için sahiplik/grup uyumunu düzeltin.
2) “Tema/eklenti yüklenemiyor”
Belirti: - Zip yükleniyor ama açılmıyor - FTP katmanı devreye girmiyor
Net düzeltme:
- wp-content/plugins ve wp-content/themes dizinlerinin owner/group’ünün doğru olduğundan emin olun.
- Önce sahiplik, ardından izin değişikliği yapın. “777” yerine hedeflenen 755 + doğru sahiplik daha güvenlidir.
3) “wp-config.php okunmuyor” veya kritik hata ekranı
Belirti: - Beyaz ekran, “database bağlantısı” gibi semptomlar
Net düzeltme:
1. wp-config.php izinlerini 640/600 aralığında kontrol edin.
2. PHP’nin çalıştığı kullanıcı/grup wp-config.php okuyabiliyor mu kontrol edin.
Güvenli değişiklik planı: risk almadan ilerleyin
İzin değiştirirken en büyük risk yanlış alana müdahale etmektir. Bu plan, sorunsuz geri dönüş sağlar:
- WordPress dizinini yedek (backup) alın. Dosya izinlerini değiştirirken revert (geri alma) şarttır.
- Önce sadece şu yolu test edin:
wp-content/uploadsyazılabiliyor mu? - Sonra
wp-content/cacheve.htaccessgerekiyorsa dokunun. - En son aşamada
wp-content/plugins/themesizin/sahiplik düzenleyin.
Eğer son 30 günde benzer sorunlar yaşanıyorsa, izin düzeltmesi tek başına çözüm olmayabilir: PHP-FPM havuzu kullanıcıları, SELinux (varsa) veya güvenlik modülleri devreye girmiş olabilir.
Hızlı kontrol listesi (kopyala-kullan)
Aşağıdaki liste, kurulum sonrası veya sorun anında aynı sırayla kontrol edilmelidir.
wp-content/uploadsizin:775(veya755), owner/group webin yazabildiği kullanıcıyla uyumluwp-content/cache(varsa) izin:775wp-config.phpizin:640(okuma hakkı PHP’de), others erişemez- WordPress core:
wp-admin,wp-includesklasörleri755 - WordPress root PHP dosyaları:
644 - Tüm siteyi
777yapma kuralı: Yalnızca hedef klasörlerde ve hedef izinlerle ilerle
Sonuç: Doğru izin setini kurun, sonra sadece gereken yeri yazılabilir yapın
WordPress’te dosya izinleri, “tek bir rakam” ile çözülmez; dizin bazlı hedef gerekir. En güvenli yaklaşım; core dosyalarını okunur tutup yazma ihtiyacı olan yeri wp-content/uploads ve (gerekiyorsa) cache klasörleriyle sınırlamaktır. Siz de önce uploads üzerinden test edin; düzelmiyorsa önce sahiplik/grup uyumsuzluğunu kontrol edin. Bu sırayı izleyerek hem hataları kalıcı biçimde azaltır hem de gereksiz güvenlik açığını önlersiniz.
Hosting karşılaştırması yapmaya hazır mısın?
100+ firmanın fiyatlarını tek tıkla karşılaştır, en uygun paketi bul.
Hosting Karşılaştır →İlgili Yazılar
Sunucuda otomatik Image Optimization nasıl yapılır? (Net rehber)
Sunucuda otomatik image optimization için doğru pipeline: görsel dönüştürme, kalite ayarı, cache ve düşen TTFB/TTFB etkisi net adımlarla.
GDPR ve KVKK için hosting: Sunucu tarafında net önlemler
GDPR ve KVKK uyumu için hostingte veri konumu, şifreleme, log yönetimi, yedekleme, erişim kontrolü ve DPA adımları için net kontrol listesi.
Object cache (APCu, Redis) ne zaman gerekir? Net karar rehberi
APCu ve Redis object cache ne zaman kullanılmalı? WordPress/PHP uygulamalarında ölçülebilir eşiklerle performans planlayın.
İlk Web Siteni Yayınla: Adım Adım Net Yayın Rehberi
İlk web siteni yayınlamak için domain, DNS, hosting, dosya yükleme, HTTPS ve test adımlarını net sırayla öğren. Yayın kontrol listesi burada.
