Drupal file_copy çalışmıyor


11

Takip koduna sahibim:

$main_image = glob('main*.{jpeg,gif,png,jpg,JPEG,JPG,PNG}', GLOB_BRACE);
if (count($main_image) != 1) 
    die("Could not find main picture !");  

$file_path = drupal_realpath($main_image[0]);
$file = (object) array(
            'uid' => $userID,
            'uri' => $file_path,
            'filemime' => file_get_mimetype($file_path),
            'display' => 1,
            'filename' => $main_image[0]
);
// copy the file in the correct folder
$destination = "public://galerii_imagini/" . $file->filename;
 if ($file = file_copy($file, $destination, FILE_EXISTS_REPLACE)) {} else {
    die("Could not copy " . $file_path . " in " . $destination);
}

Kodumda bir sorun mu var? Her zaman son if ifadesinin içindeki die komutundan mesaj alırım.

Herhangi bir yardım takdir edilecektir.

Düzenleme: Stanislav Agapov sayesinde, günlükleri drupal'dan buldum. Mesaj:

.... / main_ROSE2106.JPG dosyası, hedef hedef public: // galerii_imagini doğru yapılandırılmadığından kopyalanamadı.

Düzgün yapılandırmak için ne yapmalıyım? / Admin / config / media / dosya sisteminde yol sitelerini / varsayılan / dosyaları genel dosyalar olarak ayarladım. Ayarlanacak başka bir şey var mı?

Edit # 2: Tüm / sites / default / files ağacı için 777 ayarladım.


2
İşlev file_copyve onun tarafından çağrılan file_unmanaged_copyhatalar durumunda sistem günlüğüne mesaj yazılır. "Son günlük iletileri" raporuna baktınız mı? Büyük olasılıkla orada cevap bulacaksınız ...
Stanislav Agapov

Dosya dizininizin yazılabilir olup olmadığını kontrol edin. Değilse yazma izni verin.

Dosyalar klasörü 777 hakka sahiptir.
sebastian.roibu

Dizin iznine ne dersiniz /sites/default/files/galerii_imagini?
Jimmy Ko

2
@applecrusher Bu çok kötü bir tavsiye.

Yanıtlar:


1

Yolun sites/default/files/galerii_imagini var olduğundan ve bir dizin olduğundan emin misiniz ? Bu hatayı, yoksa veya varsa, ancak dizin yerine bir dosyaysa görebilirsiniz. Drupal'ın galerii_imaginidizini oluşturmasını bekliyorsanız , çağrılmadan önce bu satırı eklemeniz gerekir file_copy:

file_prepare_directory("public://galerii_imagini", FILE_CREATE_DIRECTORY);

Drupal 7.x kaynak kodunun araştırılmasına dayanarak, mesaj File %file could not be copied, because the destination directory %destination is not configured correctly.sadece şimdiye kadar üretilir ve file_unmanaged_copyçağrılır file_copy. file_prepare_directoryÖnce hedefe iletildiği şekilde file_copy, daha sonra üst dizinine çağrı yapar . Yalnızca her iki arama da başarısız olursa gördüğünüz hata iletisini üretir. file_prepare_directoryVarsayılan bayraklarla aradığı için şu mesajla başarısız olabilir:

  • ne hedef yol ne de üst dizini mevcut değil
  • hedef yol mevcut değil ve üst dizini mevcut, ancak bir dizin değil
  • hedef yol veya üst dizini var, bir dizin, yazılabilir değil ve yazılabilir yapmak için izinlerini değiştirme başarısız

Bununla birlikte, son durumda, sorunuzda bildirdiğiniz mesajdan hemen önce günlükte başka bir mesaj görürsünüz: The file permissions could not be set on %uri.Bu mesajı gördüğünüzü bildirmediğiniz için, yalnızca ilk iki durumdan birinin doğru olduğunu varsayabilirim.


"galerii_imagini" var ve bu bir dizin. Görüntüleri bu dizinde saklayan manuel galeriler oluşturabildiğim için drupal tarafından yazılabilir. Paylaşılan bir barındırma ve geçmişte hakları sorunu vardı çünkü ben filezilla gördüğüm haklar ile ilgili doğru olduğundan emin değilim.
sebastian.roibu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.