Php yükleniyor

4 Cevap php

Ben O'Reilly kitabının Öğrenme PHP & geçiyorum 2. ed mySQL. Michele Davis tarafından Jon Phillips.

Ben mesela 11-28 şaşırıp. Dosya boyutunu, türünü ve o tarih olup olmadığı: Hedef, bir resim yükleyebilir ve belli şartları yerine getirmesi halinde, bir yüklenenler klasörüne /tmp onu taşımaktır. Bu benim ev Ubuntu sunucuda depolanan ediliyor.

Form here, ve kod here olduğunu. Bir zorlanıyorum o kadar göstermek için alıyorum.

Ben dosya kutusuna bir dosya olmak w / o orada gönder düğmesine vurduğunda, ben aşağıdaki uyarıyı alıyorum:

Warning: unlink() [function.unlink]: No such file or directory in /home/luna/public_html/learn_php/up_urs.php on line 10

Ben daha büyük bir dosya gönderdiğinizde maxsize Ben hata mesajı alıyorum:

Error. File must be less than 28480 bytes.

Ben yanlış türde bir dosya göndermek ne zaman hata mesajı alıyorum:

You may only upload .gif & .jpg files.

Ben doğru tip ve bir dosyayı gönderdiğinizde boyutu Ben şu uyarıyı ve benim OK mesajı alıyorum:

Warning: move_uploaded_file(learn_php/uploads/) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/luna/public_html/learn_php/up_urs.php on line 21

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php4Mhykl' to 'learn_php/uploads/' in /home/luna/public_html/learn_php/up_urs.php on line 21 Thanks for your upload.

Ne denedim:

  • Ben bu yüzden geri 755 için değişti sorun izinleri olduğunu düşündüm ama dizini learn_php 777 değişen hiçbir fark yaptı.
  • /home/luna/public_html/learn_php/uploads için "yüklenenler" den yolunu değiştirme
  • getcwd() önce & kullanma unlink ve sonra move_uploaded_file komutları ama sadece ben learn_php... olduğunu söyledi
  • I //print_r($_FILES); uncommenting çalıştı ama teslim bastıktan sonra bana bir şey gelmedi.

Değil emin ne şimdi bakmak için. Herhangi bir yardım için teşekkür ederiz :)

4 Cevap

Yapmanız sonra. Hat 10 üzerinde bulunmayan bir dosya bağlantısını kesmek için çalışıyoruz çünkü Gördüğünüz ilk hata is_uploaded_file() hızlı bir if ( isset($_FILES['upload_file']['tmp_name']) ) yapmadan önce yapmanız gereken kontrol etmektir bağlantısını kesmek.

Eğer yükleme dizin zaten oluşturulmuş yok gibi görünüyor çünkü son iki uyarılardır. I move_uploaded_file() sizin için yaratacaktır sanmıyorum. Yani sadece bu dizini oluşturmak ve bunun için yazılı olması uygun izinlere sahip olduğundan emin olun.

Bir acemi olarak, ben de şey aslında nedense başarısız olduğu zaman 'tüm iyi' geri kalmamak bu fonksiyonların geri dönüş değerlerini kontrol öneriyoruz. if ( !move_uploaded_file($_FILES['upload_file']['tmp_name'], "/path/to/learn_php/uploads/".$_files['upload_file']['name']) ) { $error = "Could not move the file to the uploads directory."; } else { print "All good, thanks for the upload."; exit(); } gibi bir kod koyarak başlayın

Benim cevap bakın here. Bu dosya yükleme ve görüntü manipülasyonu için bir önek olarak kullanabileceğiniz geçerli kök dizini bulmak için size bir işlev verecek.

Sonra, unlink çalıştırmadan önce, bir is_file do () ilk kontrol (ve taşımadan önce, sen paranoyak eğer tmp var sağlamak için çalıştırabilir)

Aksine kod yolu tahmin daha yukarıdan aşağıya çalışmayı deneyin.

$uploadpath=$_SERVER['DOCUMENT_ROOT'].'\learn_php\uploads\';

Eğer kaynak sonrası yoktu çünkü ben, yanlış olabilir, ama bir dizin önünde bir çizgi eksik, bu yüzden PHP dosyası zaten beri alışkanlık, var olan \learn_php\learn_php\uploads\ bunu saklamak için çalışıyor olabilir Bu dizinde, bir alt dizine erişmeye çalışıyor böylece.

Bütün bunlardan başarısız olursa, muhtemelen dokümanlar üzerinde fırça isteyeceksiniz.

http://php.net/manual/en/features.file-upload.php

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php4Mhykl' to 'learn_php/uploads/' in /home/luna/public_html/learn_php/up_urs.php on line 21

Bu (learn_php / yüklenenler /) taşımak için çalışıyoruz klasör yok size anlatıyor. Eğer sunucu üzerinde bu klasörü yarattık Çift kontrol edin.