Drupal file_copy ไม่ทำงาน


11

ฉันมีรหัสต่อไปนี้:

$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);
}

มีบางอย่างผิดปกติกับรหัสของฉันหรือไม่ ฉันมักจะได้รับข้อความจากคำสั่งตายภายในถ้างบสุดท้าย

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม.

แก้ไข: ขอบคุณ Stanislav Agapov ฉันพบบันทึกจาก drupal ข้อความคือ:

ไฟล์ .... / main_ROSE2106.JPG ไม่สามารถคัดลอกได้เนื่องจากไดเรกทอรีปลายทางสาธารณะ: // galerii_imagini ไม่ได้รับการกำหนดค่าอย่างถูกต้อง

ฉันควรทำอย่างไรเพื่อกำหนดค่าให้ถูกต้อง ฉันได้ตั้งค่าใน / admin / config / media / file-system ไซต์ path / default / files เป็นไฟล์สาธารณะ มีอย่างอื่นที่จะตั้งค่า?

แก้ไข # 2: ฉันตั้งค่า 777 สำหรับแผนผังไซต์ / ทั้งหมด / default / files


2
ฟังก์ชั่นfile_copyและเรียกใช้โดยฟังก์ชั่นfile_unmanaged_copyในกรณีที่เกิดข้อผิดพลาดในการเขียนข้อความลงในบันทึกของระบบ คุณดูรายงาน "ข้อความบันทึกล่าสุด" หรือไม่ ส่วนใหญ่มีแนวโน้มที่คุณจะได้พบกับคำตอบที่มี ...
สตานิส Agapov

ตรวจสอบว่าไดเรกทอรีไฟล์ของคุณเขียนได้หรือไม่ ถ้าไม่เช่นนั้นให้มันเขียนอนุญาต

โฟลเดอร์ไฟล์มีสิทธิ์ 777
sebastian.roibu

วิธีการเกี่ยวกับการอนุญาตไดเรกทอรีใน/sites/default/files/galerii_imagini?
จิมมี่โค

2
@applecrusher นี่เป็นคำแนะนำที่แย่มาก

คำตอบ:


1

คุณแน่ใจหรือว่าเส้นทางนั้นsites/default/files/galerii_imagini มีอยู่และเป็นไดเรกทอรีหรือไม่ คุณสามารถเห็นข้อผิดพลาดนี้หากไม่มีหรือมีอยู่ แต่เป็นไฟล์แทนไดเรกทอรี หากคุณคาดว่า Drupal จะสร้างgalerii_imaginiไดเรกทอรีคุณจะต้องเพิ่มบรรทัดนี้ก่อนที่จะโทรไปที่file_copy:

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

ขึ้นอยู่กับการค้นหาของรหัสที่มา 7.x Drupal, ข้อความFile %file could not be copied, because the destination directory %destination is not configured correctly.เป็นเพียงที่เคยผลิตในซึ่งถูกเรียกโดยfile_unmanaged_copy file_copyมันโทรfile_prepare_directoryครั้งแรกในปลายทางตามที่ส่งไปยังfile_copyจากนั้นในไดเรกทอรีหลัก มันสร้างข้อความแสดงข้อผิดพลาดที่คุณเห็นเฉพาะเมื่อการโทรทั้งสองล้มเหลว เนื่องจากมันเรียกfile_prepare_directoryด้วยค่าสถานะเริ่มต้นจึงสามารถล้มเหลวด้วยข้อความนั้นหาก:

  • ไม่มีเส้นทางปลายทางหรือไดเรกทอรีหลักของมันอยู่
  • เส้นทางปลายทางไม่มีอยู่และมีไดเรกทอรีหลักอยู่ แต่ไม่ใช่ไดเรกทอรี
  • เส้นทางปลายทางหรือไดเรกทอรีหลักนั้นมีอยู่เป็นไดเรกทอรีไม่สามารถเขียนได้และการเปลี่ยนการอนุญาตเพื่อทำให้การเขียนล้มเหลว

อย่างไรก็ตามในกรณีสุดท้ายคุณจะเห็นข้อความอื่นในบันทึกทันทีก่อนที่คุณจะรายงานด้วยคำถามของคุณThe file permissions could not be set on %uri.เนื่องจากคุณไม่ได้รายงานว่าเห็นข้อความนั้นฉันสามารถสันนิษฐานได้ว่าหนึ่งในสองกรณีแรกนั้นถูกต้อง


มี "galerii_imagini" อยู่และเป็นไดเรกทอรี สามารถเขียนได้โดย drupal เพราะฉันสามารถสร้างแกลเลอรี่ด้วยตนเองที่จัดเก็บรูปภาพในไดเรกทอรีนี้ เนื่องจากฉันอยู่บนโฮสติ้งที่ใช้ร่วมกันและฉันมีปัญหาสิทธิ์ในอดีตฉันไม่แน่ใจว่าสิ่งที่ฉันเห็นใน filezilla นั้นถูกต้องเกี่ยวกับสิทธิ์
sebastian.roibu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.