PHP ile Büyük Boyutlu Dosyaların Upload Edilmesi

PHP varsayılan olarak 2 MB'dan büyük dosyaların upload edilmesine izin vermez. php.ini'deki ayarları değiştirerek veya doğrudan php kodunuza aşağıdaki satırları ekleyerek bu limit'i yükseltebilirsiniz.

PHP ile uygulama geliştirirken kolayca dosya upload edebilirsiniz. php.net'de dosya upload ile ilgili güzel de bir doküman hazırlanmış ve Türkçe'ye çevrilmiş, örnekler ile de nasıl yapılacağı gösterilmiş. Karşıya dosya yükleme (upload) en çok resimlerde kullanılır. Kullanıcılar resimlerini FTP gibi ek uygulamalar kullanmadan web sitelerine yükleyebiliyorlar, üstelik HTML5 ve Flash'da sürükle bırak kullanılabildiği için sanki bir uygulama ile dosya yüklüyor gibi web üzerinde dosya yükleyebilirsiniz.

Teknolojik gelişmelere paralel olarak dosyaların kalitesi ve buna bağlı olarak da boyutu artmıştır. Bugün sıradan bir cep telefonunda bile 5 MP kamera bulunmaktadır.

PHP varsayılan olarak 2 MB'dan büyük dosyaların karşıya yüklenmesine yani sunucuya upload edilmesine izin vermez. Büyük dosyalar için kullanıcılara dosyalarını 2MB'a göre düzenlemelerini söyleyebilirsiniz, ama bu hiç de pratik ve iyi bir çözüm olmaz. Bunun yerine 2MB sınırını yükseltmek daha iyi bir çözüm olur.

PHP'de upload edilecek dosyanın maksimum boyutunu belirlemek için upload_max_filesize ve post_max_size ayarlarını düzenlemek gerekiyor. Bunun dışında PHP dosyaların ne kadar sürede zaman aşımına düşeceğini belirleyen parametreyi de düzenlemek gerekiyor. Dosya upload ile ilgili PHP'nin konfigürasyon dosyası php.ini de aşağıdaki ayarları yapabilirsiniz.

php_value upload_max_filesize 10M 
php_value post_max_size 10M 
php_value max_input_time 300 
php_value max_execution_time 300

Aynı ayarları php kodunuz içinden de aşağıdaki şekilde yapabilirsiniz.

ini_set('upload_max_filesize', '10M'); ini_set('post_max_size', '10M'); ini_set('max_input_time', 300); ini_set('max_execution_time', 300);

Bunun dışında büyük boyutlu dosyaların upload edilmesi ile ilgili sizin bir öneriniz var mı?

 

Yorumlar

Eğer PHP'de dosya yüklemede bir sorunum olmasın diyerek post_max_size değerini çok fazla yükseltirseniz (örneğin 2048M gibi) bu sefer de POST değerlerinin gönderilmemesi gibi bir olay var.

Evet doğru söylemiş arkadaş. Eğer post değerini çok yüksek tutarsanız her seferde çok veri aktarılmış olur fakat aktarım verimsizleşir. Örn crc hatası gibi bir durum ile karşılaşırsa gönderilen paket, tekrar gönderilmek zorunda kalınacağı için daha büyük zaman kaybına yol açabilir.

Yeni yorum ekle