2013-03-31 30 views
13

Gerçekten sadece etrafta dalga geçiyorum ve PHP hakkında daha fazla şey öğreniyorum, ama bir döngü için beni kandıran bir şey üzerinde tökezledim. Umuyorum ki, bu konumda bir miktar fikir edinebilirim.Eğer upload_tmp_dir değeri yoksa ... temp dosyaları nereye gider? - deneyler

Temel olarak yüklenen resimler için mimetipleri keşfetmeye çalışıyorum - konu satırı gibi: eğer upload_tmp_dir değeri yoksa (geçici olarak) geçici dosyam nerede bitiyor? Bana mimetiplerimi anlattığından bahsetmeliyim! Kısmen bir başarı!

Ve benim özelliklerimden bazıları: PHP 5.3 + çalıştırıyorum ve upload_tmp_dir değerinin hiçbir değeri yok - var_dump'un yardımcı olabileceğini öneren başka bir gönderi okudum ama sadece boş bir dizi döndürüyor.

<?php 

if(empty($_FILES)){ 
    echo "nothing in files array -- ignore warning, testing only" . "<br /><br />"; 
} 
$finfo = new finfo(FILEINFO_MIME_TYPE); 
$fileContents = file_get_contents($_FILES['upload']['tmp_name']); // check tmp dir for 
$mimeType = $finfo->buffer($fileContents); 

echo $mimeType . "<br /><br />"; 
echo var_dump($_FILES) . "<br /><br />"; 
?> 

<form action="" method="post" enctype="multipart/form-data"> 
    <p> 
     <label id="upload">Select a file to upload: 
      <input type="hidden" name="MAX_FILE_SIZE" value="1048576"> 
      <input type="file" id="upload" name="upload"> 
     </label> 
    </p> 
    <p> 
     <input type="hidden" name="action" value="upload"> 
     <input type="submit" value="Submit"> 
    </p> 
</form> 

Herkese teşekkürler!

cevap

11

Büyük olasılıkla sistemin tmp dizinini kullanacaktır. Ama gerçekten öğrenmek için <?php phpinfo() ?> çıktısını kontrol etmelisiniz. Bir info.php dosyasına veya benzerine ekleyebilir ve tarayıcınızda bu dosyanın URL'sini açabilirsiniz. Tüm yapılandırma değerlerini size söyleyecektir; varsayılanlar bile.

Geçici dizinin yerini bulmak için sys_get_temp_dir()'u da kullanabilirsiniz.

+1

Merhaba Michael, benim upload_tmp_dir benim yerel değer ve "değer yok" ana değerine sahiptir. İlk etapta bu konuda beni merak ediyorum :) – Adritek

+0

Oh, tamam. Cevap güncellendi. –

2

Ben de bu cevabı arıyordum. Ben /etc ve içinde benim php.ini dosyayı bulundu:

; Temporary directory for HTTP uploaded files (will use system default if not 
; specified). 
;upload_tmp_dir = 

Bu belirtilmemiş ise /tmp işaret gibi görünüyor.

+0

her zaman varsayılan olarak belirtilmemiş. bunun nedeni: ; Varsayılan sistem varsayılanları (bkz. Sys_get_temp_dir) –

İlgili konular