IIS Üzerinde PHP Dosya Yükleme Hatalarını Giderme

PHP ile dosya yüklerken, geliştiriciler uygulamalarını etkileyebilecek çeşitli hatalarla karşılaşabilirler. Yaygın bir senaryo, bir geliştiricinin PHP kullanarak bir Internet Information Services (IIS) sunucusunda bir dosya yüklemeye çalışması ve bunun sonucunda hata mesajlarıyla karşılaşmasıdır. Eğer bir dosya yüklerken sorunlar yaşıyorsanız, doğru yere geldiniz. Bu blog yazısında, olası sorunları inceleyecek ve bu hataları etkili bir şekilde çözmek için size uygun çözümler sunacağız.

Problemi Anlamak

Basit bir PHP betiği oluşturdunuz, ancak çalıştırmaya çalıştığınızda birkaç hata alıyorsunuz. İşte karşılaşabileceğiniz hata türlerinin kısa bir özeti:

  1. İzin Engellendi:

    • Hedef klasörde izinlerin verilmemesi sebebiyle PHP’nin dosya akışını açamamasıyla ilgili uyarı mesajları.
  2. Yüklenen Dosyayı Taşıma Başarısızlığı:

    • move_uploaded_file() fonksiyonunun, geçici dosyayı belirtilen dizine taşıyamadığı için çalışamadığına dair uyarılar.
  3. Başlık Değiştirme Sorunları:

    • Başlıkların değiştirilmesinin mümkün olmadığına dair hatalar—genellikle önceki hata mesajlarından kaynaklanır.

Bu sorunlar her şey doğru yapılandırılmış gibi görünse bile sinir bozucu olabilir. Şimdi çözümlere dalalım!

Yaygın Yükleme Hatalarına Çözümler

1. Dosya Sistemi İzinleri

UNIX tabanlı sistemler 777 gibi değerler üzerine kurulmuş bir izin modeli kullanırken, Windows’un bunun eşdeğeri yoktur. IIS’nin klasörlerle etkileşimde bulunabilmesi için klasörlerinizin doğru izinlere sahip olduğundan emin olmalısınız.

Klasör İzinlerini Kontrol Etme

  • Konum: Aşağıdaki dizinler için izinleri kontrol edin:

    • E:\inetpub\vhosts\mywebsite.com\httpdocs\dump\
    • C:\WINDOWS\Temp\
  • Gerekli İzinler: IIS kullanıcı hesabının yukarıda belirtilen her iki klasörde de okuma, yazma ve değiştirme izinlerine sahip olması gerekir. İzinleri yönetmek için:

    1. Klasöre sağ tıklayın ve Özellikler’i seçin.
    2. Güvenlik sekmesine gidin.
    3. IIS kullanıcısının (örneğin IUSR veya IIS_IUSRS) listelendiğinden ve doğru izinlerin verildiğinden emin olun.

2. Doğru PHP Yapılandırması

Dosya yüklemelerini etkileyebilecek herhangi bir yapılandırma ayarını kontrol etmek için php.ini dosyanızı gözden geçirin. Gözden geçirmeniz gereken temel ayarlar:

  • upload_max_filesize: Bu, yüklenen dosyaların maksimum boyutunu belirtir.
  • post_max_size: Bu, gönderi verileri için izin verilen maksimum boyut olduğu için upload_max_filesize’dan daha büyük olmalıdır.
  • Dosya yüklemesine izin vermek için file_uploads’in On olarak ayarlandığından emin olun.

3. Hata Yönetimi

Herhangi bir hatanın etkili bir şekilde yakalandığından emin olun. Tarayıcıya çıktı verdikten sonra başlıkları değiştirebileceğinizi göz önünde bulundurarak, herhangi bir çıktı talebinden önce hata denetimleri uygulamayı düşünün:

if (move_uploaded_file($_FILES['file']['tmp_name'], './' . $_FILES['file']['name'])) {
    header('Location: http://www.mywebsite.com/dump/');
    exit;
} else {
    echo "Dosya yüklemesi başarısız oldu. Lütfen dizin izinlerini kontrol edin.";
}

Sonuç

IIS sunucusunda barındırılan bir PHP uygulamasında dosya yüklemeleri, özellikle izinler ve yapılandırmalarla ilgili olarak zorluklar çıkarabilir. IIS kullanıcı hesapları için uygun erişim haklarını sağlamak ve PHP ayarlarınızı ince ayar yapmak suretiyle karşılaştığınız yaygın hataları etkili bir şekilde çözebilirsiniz.

Eğer bu giderme ipuçları sorunlarınızı çözüyorsa, artık dosya yüklemelerini güvenle gerçekleştirebilirsiniz. İyi kodlamalar!