upload_max_filesize ve post_max_size Hatası Çözümleri

PHP Dosya Yükleme Limitleri: upload_max_filesize ve post_max_size Hatası Çözümleri

Web sitenizde kullanıcıların dosya yüklemesine izin verirken, özellikle büyük boyutlu dosyalar söz konusu olduğunda, beklenmedik hatalarla karşılaşmak oldukça yaygındır. Bu hataların başında, PHP’nin dosya yükleme limitlerinden kaynaklanan sorunlar gelir: upload_max_filesize ve post_max_size. Bu makalede, bu hataların ne olduğunu, neden ortaya çıktığını ve adım adım nasıl çözülebileceğini detaylı bir şekilde inceleyeceğiz.

upload_max_filesize Nedir?

upload_max_filesize, PHP yapılandırma dosyasında (php.ini) tanımlanan bir yönergedir ve sunucuya tek bir dosya yükleme sırasında izin verilen maksimum boyutu belirler. Varsayılan olarak genellikle 2M (2 Megabayt) veya 8M gibi düşük bir değere ayarlanmıştır. Eğer kullanıcılarınız bu limitten daha büyük bir dosya yüklemeye çalışırsa, yükleme işlemi başarısız olur ve genellikle herhangi bir hata mesajı görüntülenmez, bu da sorunun tespitini zorlaştırabilir.

post_max_size Nedir?

post_max_size ise, bir HTTP POST isteğiyle gönderilebilecek maksimum veri miktarını belirleyen başka bir php.ini yönergesidir. Bu limit, sadece yüklenen dosyaların boyutunu değil, aynı zamanda POST isteğiyle birlikte gönderilen diğer tüm form verilerini (metin alanları, diğer inputlar vb.) de kapsar. Eğer birden fazla dosya yüklüyorsanız veya tek bir büyük dosya yüklüyorsanız ve bu dosyanın boyutu post_max_size değerini aşıyorsa, yine bir hata ile karşılaşılır. Önemli bir nokta, post_max_size değerinin her zaman upload_max_filesize değerine eşit veya ondan daha büyük olması gerektiğidir. Aksi takdirde, upload_max_filesize değeri yükseltilmiş olsa bile sorunlar yaşanabilir.

Neden Bu Hataları Alırsınız?

Bu hataların temel nedeni, PHP’nin güvenlik ve kaynak yönetimi amacıyla belirlenmiş olan varsayılan limitleridir. Özellikle paylaşımlı hosting ortamlarında, sunucu kaynaklarının adil dağıtılması ve kötüye kullanımın önlenmesi için bu limitler düşük tutulabilir. Ancak kendi sunucunuzda veya VPS’nizde çalışıyorsanız, bu limitleri uygulamanızın gereksinimlerine göre ayarlamanız gerekebilir.

Çözüm Yolları: PHP Dosya Yükleme Limitlerini Artırma

Bu hataları gidermek için PHP yapılandırmasını düzenlemeniz gerekir. İşte farklı yöntemler:

1. php.ini Dosyasını Düzenleme (Önerilen Yöntem)

php.ini dosyası, PHP’nin ana yapılandırma dosyasıdır ve bu limitleri değiştirmek için en doğru yerdir.

  1. php.ini Dosyasını Bulun: Genellikle /etc/php/7.x/fpm/php.ini veya /etc/php/7.x/apache2/php.ini (PHP versiyonuna ve web sunucunuza göre değişir) gibi bir konumda bulunur. phpinfo() fonksiyonunu kullanarak dosyanın tam konumunu öğrenebilirsiniz.

  2. Düzenleme Yapın: Bir metin düzenleyici ile php.ini dosyasını açın ve aşağıdaki satırları bulun veya ekleyinupload_max_filesize = 64M
    post_max_size = 64M
    memory_limit = 128M
    max_execution_time = 300
    max_input_time = 300

  3. upload_max_filesize: Yükleyebileceğiniz maksimum dosya boyutunu belirler (örneğin 64 Megabayt).

  4. post_max_size: POST isteğiyle gönderilebilecek maksimum veri miktarını belirler. Bu değer, upload_max_filesize‘dan büyük veya eşit olmalıdır.

  5. memory_limit: Bir komut dosyasının kullanmasına izin verilen maksimum bellek miktarını belirler. Büyük dosyalarla çalışırken bu değeri artırmak faydalı olabilir.

  6. max_execution_time: Bir komut dosyasının çalışmasına izin verilen maksimum süreyi saniye cinsinden belirler. Büyük dosyaların yüklenmesi zaman alabilir.

      • max_input_time: Bir komut dosyasının giriş verilerini ayrıştırmasına izin verilen maksimum süreyi saniye cinsinden belirler.

      İhtiyaçlarınıza göre bu değerleri artırabilirsiniz (örneğin 128M, 256M vb.).

    1. Web Sunucusunu Yeniden Başlatın: Değişikliklerin etkili olması için web sunucunuzu (Apache, Nginx) ve PHP-FPM servisini yeniden başlatmanız gerekir.

      • Apache için: sudo systemctl restart apache2

      • Nginx ve PHP-FPM için: sudo systemctl restart nginx ve sudo systemctl restart php7.x-fpm (PHP versiyonunuza göre ayarlayın)

    2. .htaccess Dosyası ile Değişiklik Yapma

    php.ini dosyasına erişiminiz yoksa veya paylaşımlı bir hosting kullanıyorsanız, public_html klasörünüzdeki .htaccess dosyasına aşağıdaki satırları ekleyerek bu limitleri değiştirmeyi deneyebilirsiniz. Ancak, bu yöntem tüm hosting sağlayıcılarında desteklenmeyebilir.

    php_value upload_max_filesize 64M
    php_value post_max_size 64M
    php_value memory_limit 128M
    php_value max_execution_time 300
    php_value max_input_time 300

    Değişikliklerin hemen etkili olması gerekir, web sunucusunu yeniden başlatmaya genellikle gerek yoktur.

    3. Kullanılan Hosting Panelinden Ayarlama

    Bazı hosting sağlayıcıları (cPanel, Plesk vb.) kullanıcılarına PHP ayarlarını arayüz üzerinden düzenleme imkanı sunar. Hosting panelinizde “PHP Selector”, “MultiPHP Manager” veya “PHP Ayarları” gibi bir bölüm arayarak bu limitleri kolayca artırabilirsiniz.

    Önemli İpuçları ve Dikkat Edilmesi Gerekenler

    • Değerleri İhtiyaca Göre Ayarlayın: Limitleri gereğinden fazla artırmak sunucunuzun kaynaklarını gereksiz yere tüketebilir ve güvenlik açıklarına yol açabilir. Sadece ihtiyacınız olan kadar artırın.

    • memory_limit: Özellikle büyük resimler veya videolar gibi dosyalarla çalışırken memory_limit değerini de artırmanız gerekebilir.

    • max_execution_time ve max_input_time: Yükleme işlemi uzun sürebileceği için bu zaman limitlerini de uygun şekilde ayarlayın.

    • Sunucu Erişimi: Eğer paylaşımlı hosting kullanıyorsanız ve php.ini veya .htaccess ile değişiklik yapamıyorsanız, hosting sağlayıcınızla iletişime geçerek bu limitleri yükseltmelerini talep etmeniz gerekebilir.

    • Hata Ayıklama: Değişiklikleri yaptıktan sonra, phpinfo() fonksiyonunu kullanarak yeni değerlerin uygulanıp uygulanmadığını kontrol edin.

Bunlarda İlginizi Çekebilir