2016-03-28 25 views
0

Ben yığın taşması ve php kullanarak dosya yükleme hakkında diğer öğreticiler arıyorlar. Aşağıdaki betik, "dosya yüklenemedi" ifadesini eklediğinde, move_uploaded_file ($ file_temp, $ file_destination) koşuluyla if ifadesine ulaşana kadar çalışır.Resim upload PHP kullanarak başarısız oldu - move_uploaded_file

Chmod işlevini içeren if ifadesi, dosya paylaşımlarının 0777'ye (buradaki herkes için okuma ve yazma erişimine izin veriyorum) yükleme klasöründeki birçok değişiklikle ilgili önerilerde bulunduğum girişimi benim denemedir. taşma cevapları. Bu noktada problemin dosya izinleri olduğunu düşünmüyorum.

Temel olarak bunun nesi yanlış olduğu hakkında hiçbir fikrim yok. Yardım takdir :)

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Your Photo: <input type="file" name="image" /> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 

<?php 
print_r($_FILES); 

// file properties 
$file_name = $_FILES['image']['name']; 
$file_tmp_name = $_FILES['image']['tmp_name']; 
$file_size = $_FILES['image']['size']; 
$file_error = $_FILES['image']['error']; 

// get the extension of the file 
$file_ext = explode('.', $file_name); 
$file_ext = strtolower(end($file_ext)); 

var_dump(file_exists('uploads')); 

// this is false 
if(chmod('uploads', 0777)){ 
    echo " booooh"; 
    } 
    else{ 
    echo "naaah"; 
    } 

$file_name_new = uniqid('', true) . '.' . $file_ext; 
echo "<br>"; 
echo $file_destination = '/uploads/' . $file_name;   

// this is false too 
if(move_uploaded_file($file_temp, $file_destination)) { 
    echo "<br>$file_destination<br>"; 
    echo "hello world<br>"; 
} 
else { 
    echo "<br>file not uploaded<br>"; 
} 

?> 
+0

'var_dump (file_exists ('uploads'))' 'hata dosya/dosya veya dizini kontrol ettiğinizi düşünüyorum. http://php.net/manual/en/ini.core.php#ini.open-basedir adresindeki open_basedir seçeneğini kontrol edin. – Naumov

cevap

2

Yazmalısın:

move_uploaded_file($file_temp, $file_destination); 

$file_temp komut dosyanızda tanımlı değil. Orijinal dosyaYolu $file_tmp_name. Eğer $file_name_new kullanmak asla

move_uploaded_file($file_tmp_name, $file_destination); 

Ayrıca unutmayınız. Ek bilgi: hedef yol mutlak dosya yolu olmalıdır: /uploads/ dizini, Belge Kökünün altında değil, dizin ağacınızın üst düzeyinde olmalıdır.

+0

Düzeltme, move_uploaded_file ($ file_temp, $ file_destination) olarak değiştirildi; move_uploaded_file ($ file_tmp_name, $ file_destination); ve $ destination_path'in mutlak bir dosya yoluna değiştirilmesi. Teşekkürler @ fusion3k – Daniel

+0

Bir şey değil. – fusion3k