askıda kalıyor move_uploaded_file?

2 Cevap php

Ben sadece oldukça anlamaya olamaz tuhaf bir hata var gibi görünüyor. Benim web sitesi tek bir sunucu üzerinde çalışıyordu, ama yeni birine transfer olduğunda çalışma durduruldu. Ben bu kod satırı hata daralmış ettik inanıyorum:

$ret = move_uploaded_file($tmp_name, $orig_path);

Hata ayıklamak biraz zor, ama komut dosyası bir hata kodu geri göndermek ve daha sonra benim JavaScript olacak alert o yüzden bu bir AJAX çağrısı yoluyla yürütülür. Yani, ben bu hata ayıklama tabloların ikiye sarılmış ettik:

echo json_encode(array(

    'success' => false,

    'errno' => $tmp_name.' -> '.$orig_path,

));

exit;



$ret = move_uploaded_file($tmp_name, $orig_path);



echo json_encode(array(

    'success' => false,

    'errno' => 'no error',

));

exit;

İlki gayet iyi çalışıyor ve benzeri bir şey tükürür:

error /tmp/phpk3RICU -> /home/username/Websites/website/photos/o/2-4a3354dd017a9.jpg

Belki de ben bir linux çaylak biraz değilim, ama aslında (en kısa sürede komut çıkarken ya da ne silinir?) Benim sistemde /tmp/phpk3RICU bulamıyorum. Olsa bir saniye içinde bu konuda daha fazla.

Ben ilk hata ayıklama onay silmek ve move_uploaded_file çalışma izin verirseniz, 2. ayıklama onay move_uploaded_file asılı inanmak beni neden, idam gibi görünüyor asla.

Kullanmak yerine $tmp_name I know var olmayan bir dosyayı kullanırsanız, o zaman 2 onay idam ETMEZ. Yani ... bu sadece tmp dosyası taşımak istemiyor gibi görünüyor, ama bir hatayı rapor değil.

Ben koşuyorum taze apt-get ... daha fazla bilgi gerekiyorsa bana bildirin aracılığıyla yüklü benim Unbutu makinede LAMP yığını, yükleyin.

Oh .. ve alakalı olmadığını bilmiyorum, ama dosya flaş üzerinden yüklenen alır.

2 Cevap

Ugh. Sorun izinlere sahip oldu. 755, diğer sunucu üzerinde yeterli oldu, ama bu sunucu için değil gibi görünüyor ... gerçekten emin değil, neden ben PHP, farklı bir kullanıcı altında çalışan sanırım? Ben bütün izinleri şeyler nasıl çalıştığını gerçekten emin değilim. Ne gerçekten beni hayale sığmaz neden mkdir ve move_uploaded_file başarısız ve yanlış dönmedi ...

Tüm hataları tükürmek için PHP söylüyorum deneyin:

error_reporting(E_ALL);

Bu sunuculardan biri kırılmadan bir yapılandırma tutarsızlık olabilir. move_uploaded_file() manual sayfasında:

Note: move_uploaded_file() is both safe mode and open_basedir aware. However, restrictions are placed only on the destination path as to allow the moving of uploaded files in which filename may conflict with such restrictions. move_uploaded_file() ensures the safety of this operation by allowing only those files uploaded through PHP to be moved.