ประโยชน์ของสารบบผับใน Magento 2 คืออะไร


11

บางทีฉันอาจจะไม่ได้รับมัน แต่ถ้าไฟล์ของฉันถูกแคชอยู่แล้วสิ่งที่จะเป็นการใช้งานไดเร็กตอรี่ pub ใน Magento 2? การเดาที่มีการศึกษาเพียงอย่างเดียวของฉันคือการใช้กลไกทางเลือกสามารถบรรเทาได้บ้างโดยการใช้ชุดไฟล์ที่รู้จักสำหรับชุดรูปแบบ

จากการอ่านเอกสารฉันไม่เข้าใจถึงประโยชน์ที่ชัดเจนแม้ว่าฉันจะรู้สึกว่าฉันมีความเข้าใจอย่างถ่องแท้ในการทำความเข้าใจไฟล์ไดนามิกสแตติกและแคช

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


คำถามที่ดีฉันสงสัยว่าสิ่งที่ความปลอดภัยเป็นประโยชน์เพียงอย่างเดียวหรือยังช่วยเพิ่มความเร็วได้อีกด้วย
Claudiu Creanga

คำตอบ:


15

ไดเรกทอรี pub เป็นตัวชี้วัดความปลอดภัยเพื่อป้องกันการเข้าถึงสาธารณะในทรัพย์สินไดเรกทอรีรากของคุณคือไดเรกทอรีแอป เหตุผลที่ index.php ยังตั้งอยู่ในไดเรกทอรีรากจะสันนิษฐานว่าบุคคลที่อยู่ในพื้นที่ที่ทำให้มันยากหรือเป็นไปไม่ได้ที่จะเปลี่ยน webroot ของคุณ

เมื่อใช้ pub / index.php โฟลเดอร์ซอร์สของแอปจะไม่สามารถเข้าถึงได้ในขณะที่เป็นไปได้ถ้า index.php ถูกรันจากไดเรกทอรีรูท การฝึกฝนนี้มีให้เห็นใน Symfony และ Zend 2 ด้วย

วิธีนี้ไม่มีการกำหนดค่าแอปพลิเคชัน Magento แม่แบบและอื่น ๆ

โดยทั่วไปแล้วความรู้เกี่ยวกับสถาปัตยกรรมในส่วนของ pub index.php กับ root index.php นั้นไม่จำเป็นสำหรับนักพัฒนาส่วนหน้าในทีม แต่การเข้าใจพื้นฐานของมันเป็นสิ่งที่ดี


คุณต้องเพิ่มdocument_root_is_pub = trueเข้าไป./app/etc/env.phpถ้ารูทของคุณคือ/pub/- github.com/magento/magento2/pull/9094
Alex Gusev

10

Magento 2 มาพร้อมกับไฟล์ index.php สองไฟล์โดยที่ไฟล์หนึ่งอยู่ในโฟลเดอร์ root และอีกไฟล์หนึ่งอยู่ในโฟลเดอร์ / pub Magento 2 เสนอให้เรียกใช้แอปพลิเคชันของคุณโดยใช้หนึ่งในไฟล์นี้ หากคุณเลือกที่จะเรียกใช้แอปพลิเคชันของคุณโดยใช้ /pub/index.php นี่เป็นการตัดสินใจที่ดีสำหรับมุมมองด้านความปลอดภัยเนื่องจากเป็นการ จำกัด การเข้าถึงไฟล์แอปพลิเคชันโดยตรงโดยไม่ได้รับอนุญาต

โปรดทราบว่า/index.phpไฟล์ดังกล่าวจะถูกใช้เมื่อเรียกใช้ในโหมดนักพัฒนาซอฟต์แวร์และควร/pub/index.phpใช้เมื่อเรียกใช้เป็นโหมดการใช้งานจริง


1
ฉันขอขอบคุณที่ชี้ให้เห็นว่ามี 2 ไฟล์ index.php แต่สิ่งที่เป็นประโยชน์และการใช้งานของการใช้งานโดยใช้สถาปัตยกรรมประเภทนี้ไม่ได้รับการแก้ไข นอกจากว่าฉันหายไปในเรื่องที่ฉันไปข้างหน้าและตอบคำถามจากการดู Alan Storm, Zend และ Symfony บทความและเอกสาร
Brian Ellis

เกี่ยวกับคำสั่งสุดท้ายของคุณเกี่ยวกับ dev / prod คุณสามารถยืนยันได้ว่าสิ่งนี้จะทำที่ใด ฉันไม่เห็นอะไรเช่นนั้น
Claudiu Creanga

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