Dosya yükleme boyutu arttırma ve çalışma süreleri hakkında riskleri anlatacağız. Risklerden başlayalım:
1️⃣ upload_max_filesize 128M (Maksimum Dosya Yükleme Boyutu)
✅ Faydası: Kullanıcıların büyük dosyalar (örneğin yüksek çözünürlüklü videolar veya resimler) yüklemesine olanak tanır.
⚠️ Riskleri:
- Disk Alanı Tükenebilir 🛑
- Kullanıcılar çok büyük dosyalar yüklerse, sunucunun depolama alanı hızla dolabilir.
- Bu, sunucunun çökmesine veya yavaşlamasına neden olabilir.
- DDoS ve Kötüye Kullanım Tehlikesi 🔥
- Kötü niyetli kullanıcılar, çok büyük dosyalar yükleyerek sunucunun diskini doldurabilir ve hizmet kesintisine neden olabilir.
- Özellikle kamuya açık bir dosya yükleme sistemi kullanıyorsan, bu büyük bir güvenlik açığı olabilir.
🎯 Çözüm:
- Kullanıcıların dosya boyutu sınırlarını mantıklı belirle (Örneğin, 50MB yerine 128MB gerçekten gerekli mi?)
- Dosya türü kısıtlamaları uygula (Sadece .jpg, .png, .mp4 gibi güvenli formatları kabul et).
- Yüklenen dosyaları periyodik olarak temizleyen bir cron job yaz.
2️⃣ post_max_size 128M (Maksimum POST Verisi Boyutu)
✅ Faydası: Büyük dosya yüklemeleri veya formlar için gereklidir.
⚠️ Riskleri:
- Hafıza Tüketimi 🛑
- Sunucu, büyük POST isteklerini işlemek için çok fazla RAM kullanabilir.
- Eğer birden fazla kullanıcı aynı anda büyük dosyalar yüklüyorsa, sunucu yanıt vermeyi durdurabilir.
- Sistem Çökmesi 💥
- Kullanıcı büyük bir POST isteği başlatıp yarıda bırakırsa, sunucu RAM’i gereksiz yere tahsis edebilir.
- Bu da işlem kuyruğunun dolmasına ve sitenin çökmesine neden olabilir.
🎯 Çözüm:
- Gerçekten büyük POST verisine ihtiyacın var mı? Belki daha küçük parçalar halinde yükleme yapılabilir.
- Dosya yüklemelerinde chunking (parça parça yükleme) kullanabilirsin (örneğin AJAX ile).
- POST yerine streaming tabanlı yükleme çözümleri araştırılabilir.
3️⃣ max_execution_time 300 (PHP Betiğinin Maksimum Çalışma Süresi – 5 Dakika)
✅ Faydası: Uzun süren işlemleri (büyük dosya işleme, yedekleme, video işleme) tamamlamaya izin verir.
⚠️ Riskleri:
- Sunucu Kaynaklarını Engelleyebilir 🔥
- Eğer bir PHP betiği 5 dakika boyunca çalışıyorsa, diğer işlemleri bloke edebilir.
- Bu, sunucunun diğer istekleri işlemesini geciktirebilir.
- Sonsuz Döngü ve Sunucu Çökmesi 🛑
- Eğer betik bir hata nedeniyle sonsuz döngüye girerse, 5 dakika boyunca boşuna işlem yapar ve sunucuyu yorar.
- Bu durum, yüksek CPU kullanımı ve sunucu çökmesi gibi sorunlara yol açabilir.
🎯 Çözüm:
- Gerçekten uzun süren işlemler için asenkron işlem kullan (background job).
- Kodun içinde zaman hesaplamaları yaparak işlem süresini kontrol et (set_time_limit(60) gibi).
- Sonsuz döngüleri ve uzun süren SQL sorgularını optimize et.
4️⃣ max_input_time 300 (PHP’nin Giriş Verisini Okuma Süresi – 5 Dakika)
✅ Faydası: Büyük veri işleyen API’ler veya uzun süren dosya yüklemeleri için gereklidir.
⚠️ Riskleri:
- Sunucu Kaynaklarını Gereksiz Yere Kullanabilir 🔥
- Kullanıcı bir yükleme başlatır ve ağ bağlantısını keserse, PHP 5 dakika boyunca boşuna veri bekler.
- Bu, bağlantı kaynaklarının gereksiz yere harcanmasına neden olur.
- Güvenlik Açığı Oluşturabilir 🛑
- Kötü niyetli bir saldırgan, sunucuya devasa POST istekleri göndererek sunucu kaynaklarını tüketebilir.
- Yüksek max_input_time değeri, brute force saldırılarına karşı zayıflık yaratabilir.
🎯 Çözüm:
- Gerçekten 5 dakika boyunca giriş verisini okumaya ihtiyacın var mı?
- Daha kısa bir süre belirle (örneğin 60 saniye) ve işlemleri optimize et.
- İstemcinin bağlantısını kontrol eden mekanizmalar ekle (örneğin WebSocket veya AJAX polling).
Sonuç ve Öneriler
- Mümkün olduğunca düşük değerler kullanmaya çalış.
- Dosya yükleme sınırını kullanıcı ihtiyacına göre ayarla (örneğin 128MB yerine 50MB düşünebilirsin).
- Asenkron ve parçalı yükleme yöntemlerini araştır (örneğin AJAX + chunking).
- Sunucunun aşırı yüklenmemesi için max_execution_time ve max_input_time değerlerini makul seviyede tut.
Bunları dikkate almazsan sunucun DDoS saldırılarına açık hale gelebilir, disk dolabilir, RAM ve CPU tüketimi artabilir, hatta sitende kesintiler yaşanabilir. 🚨
Wordrpess Dosya Yükleme Boyutu Arttırma işlemi
1️⃣ php_value upload_max_filesize 128M
✔ Anlamı:
Bu ayar, PHP üzerinden yüklenebilecek maksimum dosya boyutunu belirler.
✔ 128M ne demek?
128 Megabayt (MB) sınırı konulmuş. Yani kullanıcı, en fazla 128MB boyutunda bir dosya yükleyebilir.
✔ Örnek Kullanım:
Eğer bir kullanıcı 200MB’lık bir video yüklemeye çalışırsa, yükleme başarısız olur çünkü upload_max_filesize sınırı 128MB olarak belirlenmiştir.
2️⃣ php_value post_max_size 128M
✔ Anlamı:
Bir form gönderilirken (POST yöntemiyle) gönderilebilecek maksimum veri boyutunu belirler.
✔ 128M ne demek?
Form üzerinden gönderilecek toplam veri miktarı en fazla 128MB olabilir.
✔ Neden Önemli?
Dosya yükleme formları da POST yöntemiyle çalıştığından, post_max_size değeri upload_max_filesize değerinden büyük veya eşit olmalıdır. Aksi halde büyük dosya yükleme işlemleri başarısız olur.
3️⃣ php_value max_execution_time 300
✔ Anlamı:
Bir PHP dosyasının maksimum çalışabileceği süreyi (saniye cinsinden) belirler.
✔ 300 ne demek?
PHP betiği 300 saniye (5 dakika) boyunca çalışabilir. Eğer bir işlem 5 dakikayı aşarsa, PHP otomatik olarak işlemi durdurur ve “Maximum execution time exceeded” (Maksimum yürütme süresi aşıldı) hatası verir.
✔ Neden Gerekli?
- Büyük dosyalar yüklenirken uzun sürebilir.
- Büyük veritabanı sorguları zaman alabilir.
- Büyük resim/video dosyaları işlenirken sürenin uzun olması gerekebilir.
4️⃣ php_value max_input_time 300
✔ Anlamı:
PHP’nin gelen veriyi işlemek için harcayabileceği maksimum süreyi (saniye cinsinden) belirler.
✔ 300 ne demek?
PHP, formdan veya dosya yükleme işleminden gelen verileri 300 saniye (5 dakika) boyunca okuyabilir ve işleyebilir.
✔ Farkı Ne?
- max_execution_time: Kodun tüm çalışma süresi
- max_input_time: Yalnızca giriş verisinin okunma süresi
Eğer bir kullanıcı büyük bir dosya yüklüyorsa ve sunucu veriyi okumak için çok zaman harcıyorsa, bu değer artırılabilir.