Magento 2 404 ข้อผิดพลาดสำหรับสคริปต์และ css


39

ฉันได้ดาวน์โหลดและติดตั้ง Magento 2 จากhttps://github.com/magento/magento2

แต่ฉันได้รับข้อผิดพลาด 404 สำหรับสคริปต์และ cs ที่อยู่ในhttp: // localhost / magento2 / pub / static /

ฉันตรวจสอบแล้ว Apache rewrite engine เปิดอยู่ แต่ยังคงไฟล์ css และ js ไม่โหลด

เมื่อฉันพยายามเข้าถึงไฟล์โดยตรงจากเบราว์เซอร์จะมีข้อยกเว้นดังต่อไปนี้

Cannot create a symlink for "D:/xampp/htdocs/magento2/lib/web/mage/calendar.css" and place it to "D:/xampp/htdocs/magento2/pub/static/frontend/Magento/blank/en_US/mage/calendar.css" Warning!symlink(): Cannot create symlink, error code(1314)
#0 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\Filesystem\Directory\Write.php(155): Magento\Framework\Filesystem\Driver\File->symlink('D:/xampp/htdocs...', 'D:/xampp/htdocs...', Object(Magento\Framework\Filesystem\Driver\File))
#1 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink.php(30): Magento\Framework\Filesystem\Directory\Write->createSymlink('lib/web/mage/ca...', 'frontend/Magent...', Object(Magento\Framework\Filesystem\Directory\Write))
#2 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\View\Asset\Publisher.php(65): Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink->publishFile(Object(Magento\Framework\Filesystem\Directory\Write), Object(Magento\Framework\Filesystem\Directory\Write), 'lib/web/mage/ca...', 'frontend/Magent...')
#3 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\View\Asset\Publisher.php(49): Magento\Framework\App\View\Asset\Publisher->publishAsset(Object(Magento\Framework\View\Asset\File))
#4 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\StaticResource.php(118): Magento\Framework\App\View\Asset\Publisher->publish(Object(Magento\Framework\View\Asset\File))
#5 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\Bootstrap.php(245): Magento\Framework\App\StaticResource->launch()
#6 D:\xampp\htdocs\magento2\pub\static.php(13): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\StaticResource))
#7 {main}

ระบบปฏิบัติการของฉันคือ Windows 7 และฉันใช้เซิร์ฟเวอร์ xampp


ตระหนักถึงสิ่งนี้ถูกถามในปี 2015 แต่ในกรณีที่คนอื่นยังคงดูโพสต์นี้คุณไม่ควรได้รับวีโอไอพีจากคอมไพล์ คุณทำเช่นนี้ได้ก็ต่อเมื่อคุณส่งคำขอดึง ควรดาวน์โหลดวีโอไอพีจากส่วนดาวน์โหลดของเว็บไซต์หรือติดตั้งผ่านผู้เรียบเรียง
Dominic Xigen

คำตอบ:


86

เมื่อไม่ได้อยู่ในโหมดการผลิต Magento 2 จะพยายามสร้าง symlink สำหรับแหล่งข้อมูลคงที่ คุณสามารถเปลี่ยนพฤติกรรมดังกล่าวได้โดยทำสิ่งต่อไปนี้

  1. เปิดขึ้นapp/etc/di.xmlและค้นหาvirtualType name="developerMaterialization"หัวข้อ ในส่วนนั้นคุณจะพบรายการname="view_preprocessed"ที่ต้องแก้ไขหรือลบ คุณสามารถแก้ไขได้โดยการเปลี่ยนเนื้อหาจากMagento\Framework\App\View\Asset\MaterializationStrategy\Symlinkเป็นMagento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. ลบไฟล์ภายใต้ pub / static เพื่อกำจัด symlink ที่มีอยู่ คุณอาจต้องระวังไม่ให้ลบ.htaccessไฟล์

การดำเนินการนี้ควรแก้ไขข้อผิดพลาดของคุณด้วย symlink


2
เพียงลบโฟลเดอร์ pub / static ให้ฉัน
Adam Moss

4
การลบเนื้อหา pub / static นั้นไม่เพียงพอในกรณีของฉัน ฉันต้องเปลี่ยน Symlink เป็น Copy ตามที่ระบุไว้ในคำตอบข้างต้นเพื่อให้การโหลดผิวดีขึ้น!
Haijerome

2
ทำงานเหมือนจับใจ ... !!!!
Neeraj Garg

2
สิ่งนี้ไม่ได้ผลสำหรับฉันแม้แต่การลบโฟลเดอร์ / pub / static ความคิดอื่น ๆ ?
goncalotomas

2
ไม่ทำงานสำหรับฉัน :-(
Alaa M. Jaddou

7

ฉันประสบปัญหานี้และพยายามคิดออก ฉันเห็นด้วยกับ Chris O'Toole ฉันจะเพิ่มขั้นตอนพิเศษ ขั้นตอนของฉันคือ

  1. เปิดแอพ / etc / di.xml แล้วค้นหา Symlink ตรวจสอบมันอยู่ในส่วนต่อไปนี้
<virtualType name="developerMaterialization" type="Magento\Framework\App\View\Asset\MaterializationStrategy\Factory">
                <arguments>
                    <argument name="strategiesList" xsi:type="array">
                        <item name="view_preprocessed" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
                        <item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
                    </argument>
                </arguments>
            </virtualType>

แทนที่ Symlink ด้วยคำว่า Copy บันทึก

  1. ลบโฟลเดอร์ทั้งหมดใน pub / static อย่าลบ. htaccess และไฟล์อื่น ๆ

  2. เรียกใช้ xampp ในฐานะผู้ดูแลระบบ เรียกใช้บรรทัดคำสั่งในฐานะผู้ดูแลระบบ grunt exec:<theme name>วิ่ง

ป้อนคำอธิบายรูปภาพที่นี่

คุณจะเห็นว่ามันทำงานได้ดี

จากนั้นคุณสามารถเรียกใช้ grunt less:<theme name>

ป้อนคำอธิบายรูปภาพที่นี่

ในที่สุดคุณสามารถเรียกใช้ grunt watch

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อคุณทำการเปลี่ยนแปลงในไฟล์ที่น้อยกว่า (_theme.less หรือ _extend.less) มันจะสร้างไฟล์ style-l และ style-m css ในโฟลเดอร์ pub / static โดยอัตโนมัติ

ฉันใช้ magento 2.1 ใน windows 10


จริงๆแล้วเราไม่ต้องการขั้นตอนแรก
20651 cha

2

อย่าลืมอัปเดตการอนุญาตไฟล์หลังจาก Magento สร้างไฟล์สแตติกใหม่เหล่านี้ พวกเขาไม่ได้เป็นเจ้าของโดยข้อมูล www ดังนั้นพวกเขาจะให้ 404


1

ในกรณีของฉันมันไม่ได้เป็นเพราะฉันapp/etc/di.xmlได้รับการMagento\Framework\App\View\Asset\MaterializationStrategy\Symlinkกล่าวถึงโดย @Chrish เป็นเพราะโมดูลตัวใดตัวหนึ่งของฉันมีข้อผิดพลาดของสคริปต์ใน.phtmlไฟล์ของฉัน ฉันอยากจะแนะนำให้ตรวจสอบรหัสของคุณใน.phtmlไฟล์ initialize.phtmlในกรณีของฉันมันก็แก้ไขได้โดยการแก้ไขทำในแฟ้มสคริปต์ของฉัน


0

ฉันพบสิ่งสำคัญในการใช้สิทธิ์ที่ถูกต้องสำหรับ apache ด้วย mod_php สำหรับ pub / static และ var / โฟลเดอร์ จากบทความ Alan Storm http://alanstorm.com/magento_2_adding_frontend_files_to_your_module

find /path/to/magento2/pub/static -exec chmod 777 '{}' +
find /path/to/magento2/var/ -exec chmod 777 '{}' + 

คุณควรดำเนินการในเทอร์มินัลเซิร์ฟเวอร์ นั่นทำให้ฉันมีข้อผิดพลาด 404 สำหรับสคริปต์และรูปภาพ

ป.ล. แต่สำหรับลินุกซ์


คุณสามารถchmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano

0

ฉันคิดว่าวิธีที่เหมาะสมสำหรับการทำเช่นนี้คือจากบรรทัดคำสั่ง: cd ไปยังไดเรกทอรี magento ของคุณและเรียกใช้คำสั่งต่อไปนี้:

php bin/magento setup:static-content:deploy

ล้างvar/cacheไดเรกทอรีและตรวจสอบ


0

pub/static/*เพียงแค่ลบไฟล์ทั้งหมดภายใต้ Magento จะสร้างไฟล์คงที่ให้คุณโดยอัตโนมัติเมื่อคุณโหลดหน้าเว็บ

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