ไม่สามารถสร้างภาพขนาดย่อขนาดกลางและขนาดใหญ่


10

เมื่อใช้ติดตั้งใหม่ของ Drupal 7.10 sites/uploadsเราได้ตั้งไดเรกทอรีสำหรับการอัปโหลดสาธารณะ

เมื่อฉันเพิ่มรูปภาพในอินสแตนซ์เนื้อหาฉันได้รับการอัปโหลดต้นฉบับไปsites/example.org/files/imagename.pngตามที่คาดไว้ อย่างไรก็ตามภาพอื่น ๆ (ภาพ, ขนาดกลางและขนาดใหญ่) sites/example.org/styles/*ไม่ได้รับการสร้างขึ้นใน

ไดเรกทอรีนี้สามารถอ่านและเขียนได้โดยผู้ใช้ PHP5-FPM ดังนั้นจึงไม่ควรมีการอนุญาตให้ใช้งาน

ทำไมสิ่งนี้ถึงเกิดขึ้น ฉันจะแก้ไขได้อย่างไร


หากคุณใช้ nginx เป็นเว็บเซิร์ฟเวอร์คุณต้องมีการกำหนดค่าเพิ่มเติมใน vhost ของคุณอ่านข้อมูลเพิ่มเติมได้ที่นี่: drupal.org/node/1048570#comment-4047984
Gnuget

คำตอบ:


13

ใช่แล้วคำตอบคือจริง ๆ แล้วลึกซึ้งกว่าที่ฉันรู้เล็กน้อย ปรากฎว่าการimagecacheเปลี่ยนD7 ต้องการความสนใจใน nginx vhost ของคุณ หากไม่มี 404s ที่ถูกส่งไปยัง Drupal สำหรับไฟล์ที่หายไปรูปภาพจะไม่ถูกสร้างขึ้น - สิ่งที่ฉันไม่ได้ตระหนักในตอนแรกอย่างที่ฉันคิดว่ามันถูกสร้างขึ้นเมื่ออัพโหลด

location @rewrite {
    rewrite ^/(.*)$ /index.php?q=$1;
}

location ~ ^/sites/.*/files/styles/ {
    try_files $uri @rewrite;
}

จำเป็นต้องเพิ่มไปยังข้อกำหนดของเซิร์ฟเวอร์ของคุณและคุณควรพร้อมที่จะม้วน เห็นได้ชัดว่าเส้นทางอาจต้องแก้ไขการตั้งค่าของคุณ แต่สำหรับฉันแล้ว


1
โปรดทราบว่าส่วน @rewrite จะต้องมีการกำหนดอย่างเหมาะสมที่อื่นในไฟล์การกำหนดค่าเพื่อให้สามารถทำงานได้ ที่กล่าวว่ามันเป็นอยู่แล้วในเหมืองและแก้ปัญหาของฉันเช่นกันดังนั้นขอบคุณ jvc26 :)
El Yobo

@ElYobo จุดที่ดี - ได้อัปเดตคำตอบเพื่อให้แน่ใจว่าชัดเจน ขอบคุณ
jvc26

สิ่งนี้จะส่งผลต่อการกำหนดค่าพร็อกซีย้อนกลับของ nginx หรือไม่ ฉันมีปัญหาเดียวกันและดูเหมือนว่าจะไม่สามารถแก้ไขได้
Grizly

หากคุณต้องการให้พวกเขาสร้างเมื่ออัพโหลดdrupal.org/project/imageinfo_cacheทำเช่นนั้น
mikeytown2

จับดี. ในที่สุดสิ่งนี้ทำให้ฉันใช้ไฟล์เซิร์ฟเวอร์ที่แนะนำของ nginx แทนที่จะเป็นไฟล์ที่ DigitalOcean กำหนดค่าโดยอัตโนมัติด้วยการติดตั้ง Drupal แบบคลิกเดียว
Meglio

2

อย่าลืมตรวจสอบทั้งพา ธ ของระบบไฟล์สาธารณะและพา ธ ชั่วคราวที่ admin / config / media / file-system

เมื่อฉันมีทั้งสองโฟลเดอร์ที่ตั้งค่าด้วยสิทธิ์ที่ถูกต้องโฟลเดอร์ย่อยของฉันจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อฉันบันทึกไฟล์รูปภาพถูกบันทึกและข้อความแสดงข้อผิดพลาดหายไป :-)


2

ในกรณีของฉันมีปัญหาเกิดขึ้นเนื่องจากรูปภาพถูกดึงมาโดยใช้ https

ฉันเพิ่มบรรทัดต่อไปนี้ในการตั้งค่าหน้าเว็บที่ปลอดภัยเพื่อไม่สนใจ https บนเส้นทางไฟล์

*/files/*

หวังว่านี่จะช่วยใครซักคน :)


1

ในขณะที่คุณพูดว่าคุณได้ตรวจสอบการอนุญาตแล้วยังคงเป็นสิ่งที่ฉันจะเริ่มต้นเนื่องจากฉันมีปัญหานี้ด้วยตัวเองบ่อยครั้งและมันก็เกือบจะเป็นปัญหาสิทธิ์เสมอ

คำแนะนำทั่วไป: ก่อนอื่นให้ไปที่ admin / config / media / file-system แล้วคลิก "Save configuration" สิ่งนี้จะทำให้ Drupal ประเมินสิทธิ์ของไดเรกทอรีที่กำหนดอีกครั้งและจะให้ข้อความผิดพลาดหากพบปัญหา

ที่สอง: ฉันคิดว่าคุณมี apache หรือ www-data หรือผู้ใช้อื่น ๆ ที่เป็นเจ้าของเว็บเซิร์ฟเวอร์ซึ่งต่างจากผู้ใช้ php หรือไม่ บนระบบ Linux หรือ Mac ให้ทำ sudo ต่อผู้ใช้นั้น การพยายามเขียนไฟล์ในฐานะผู้ใช้ที่ถูกต้องเป็นวิธีที่ดีที่สุดในการรับรองว่าคุณมีสิทธิ์ที่ถูกต้อง ไปที่ sites / domain.com / files / และเรียก "echo data> new_file; cat new_file;" ในอาคารผู้โดยสาร สิ่งนี้จะตรวจสอบว่าคุณสามารถเขียนไปยังไดเรกทอรีเขียน ทำเช่นเดียวกันกับ tmp dir ของคุณ หวังว่าคนอื่นสามารถแนะนำวิธีการกระทำที่เหมือนกันในระบบเช่น windows

ที่สาม: การออกกฎการอนุญาตไดเรกทอรีให้ใช้ไดเรกทอรีไฟล์ 777 ซ้ำ ๆ คุณสามารถคืนค่าการอนุญาตที่มีสติมากขึ้นในภายหลัง

find . -type d -print0 | xargs -0 chmod 755
find . -type f -print0 | xargs -0 chmod 644

ที่สี่: ตรวจสอบให้แน่ใจว่าไดเรกทอรี tmp ที่มีความสมบูรณ์แบบ

ประการที่ห้า: คุณอาจจำเป็นต้องเริ่มแก้ไขจุดบกพร่องของรหัสหากคุณพบข้อผิดพลาดได้แล้ว


ขอบคุณสำหรับคำแนะนำ: ได้ลองไปแล้วไม่มีข้อผิดพลาดจาก Drupal ในการเปลี่ยนแปลงระบบไฟล์ดังนั้นสิทธิ์จะต้องถูกปรับ PHP ประมวลผลการทำงานทั้งหมดในฐานะผู้ใช้ที่สามารถเขียนไปยังไดเรกทอรีนั้นดังนั้นผู้ใช้เว็บเซิร์ฟเวอร์จะทำงานตามที่จะไม่สร้างความแตกต่างในการเขียนความสามารถ ตรวจสอบสิทธิ์ด้วยตนเองที่เข้ากันได้กับการเขียน / tmp เหมือนปกติ 777 ดังนั้นจึงไม่มีปัญหาการเขียนที่นั่น ความแตกต่างของเส้นทางได้ถูกจัดเรียงเป็นส่วนหนึ่งของฉัน
jvc26

ในฐานะที่เป็นหัวขึ้นปัญหาคือหนึ่งในการกำหนดค่า nginx ที่มีปัญหาสำหรับการผ่าน 404s ไปยัง Drupal ซึ่งจะก่อให้เกิดการสร้างภาพขนาดย่อ
jvc26

1

เพื่อให้คำตอบของ Letharion สมบูรณ์นี่คือวิธีที่ฉันใช้ในการสร้างภาพขนาดย่อขนาดกลาง ... รูปแบบภาพที่สร้างขึ้น

ฉันแม่นยำว่าฉันตรวจสอบทุกจุดที่ระบุไว้ข้างต้นก่อนโดยไม่มีผลลัพธ์

จากนั้น (บน Linux OS) ฉันแก้ไข/usr/local/etc/suphp.confเพื่อเปลี่ยน umask บน phpเพื่อที่จะสามารถสร้างไฟล์และไดเรกทอรีที่มีสิทธิ์สูงสุด 755 ครั้ง (บน 744 สูงสุด)

และนี่เป็นการแก้ปัญหาอย่างแน่นอน :)


0

ฉันใช้ Drupal 8.0.3
ในกรณีของฉันโฟลเดอร์นี้ไม่ได้ถูกสร้างขึ้นในการติดตั้ง

sites/default/files/field/image

ดังนั้นฉันจึงวางมันโดยการคัดลอกจากการติดตั้ง Drupal รุ่นเก่า
รูปภาพทั้งหมดรวมถึงภาพย่อขนาดกลางและขนาดใหญ่จะปรากฏขึ้น


-1

ตรวจสอบไฟล์. htaccess ของคุณในไดเรกทอรีรากและไฟล์ แทนที่ด้วยไฟล์. htaccess ใหม่หากจำเป็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.