การติดตั้งในระบบ Magento 2 ไม่ได้สร้างไฟล์ในโฟลเดอร์ pub / static


15

ฉันเพิ่งติดตั้ง Magento 2 Community Edition พร้อมข้อมูลตัวอย่าง (ดาวน์โหลดจากเว็บไซต์ของพวกเขาและไม่ได้ติดตั้งกับผู้แต่ง) ภายในเครื่องผ่านทาง MAMP กระบวนการติดตั้งสำเร็จแล้ว แต่ไฟล์ทั้งหมดในโฟลเดอร์ pub / static หายไปยกเว้น. htaccess นั่นหมายถึง css, js และอื่น ๆ คืนค่า 404 ทั้งส่วนหน้าและส่วนหลัง

ฉันใช้เวลาหลายชั่วโมงพยายามแก้ไขปัญหานี้โดยไม่มีโชค นี่คือสิ่งที่ฉันทำไปแล้ว:

  • เปลี่ยนOptions Indexes FollowSymLinks AllowOverrideจาก 'ไม่มี' เป็น 'ทั้งหมด' ใน /MAMP/conf/apache/httpd.conf และเริ่ม MAMP ใหม่
  • ทำให้แน่ใจว่าLoadModule rewrite_module modules/mod_rewrite.soไม่มีการใส่เครื่องหมายใน httpd.conf
  • ตั้งค่าโดเมนการพัฒนา (magento.dev) ใน MAMP
  • ลองใช้งานphp bin/magento setup:static-content:deployใน root magento.dev โดยใช้ Terminal อย่างไรก็ตามสิ่งนี้จะส่งคืน:

ข้อผิดพลาดร้ายแรง: ไม่พบคลาส 'Locale' ใน /Applications/MAMP/htdocs/magento.dev/vendor/magento/framework/Locale/Bundle/DataBundle.php บรรทัดที่ 64

  • Uncommented และเปลี่ยนแปลง RewriteBase เป็นRewriteBase /ใน. htaccess-file ในไดเรกทอรีราก magento.dev
  • ตั้ง Magento ในโหมดพัฒนา
  • การล้างแคชด้วยตนเองและทำงานphp bin/magento setup:static-content:deployอีกครั้ง

มัคคุเทศก์และกระทู้ในฟอรัมส่วนใหญ่บอกให้ฉันเรียกใช้: php bin/magento setup:static-content:deployแต่ฉันไม่แน่ใจว่าถ้าฉันทำอย่างถูกต้อง

ระบบปฏิบัติการ: OSX 10.11.2

รุ่น MAMP: 3.5

รุ่น PHP: 7.0

รุ่น Apache: 2.4.16

รุ่น MySQL: 5.6.25

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


ฉันใช้ 2.2.2 ติดตั้งบนเซิร์ฟเวอร์ CentOS ไม่มีอะไรในหน้านี้ใช้งานได้ ในการมีสไตล์ใด ๆ ฉันต้องวิ่งphp bin/magento setup:static-content:deploy -f และรอ 80 วินาที
Chris K

คำตอบ:


15

SOLUTION # 1 (หากคุณต้องการแก้ไขไฟล์ XML)

ฉันต้องการให้คุณดาวน์โหลด Magento 2 zip จากmagentocommerce.com/downloadสร้างdbใหม่ในphpmyadminแยก zip ในโฟลเดอร์htdocs ติดตั้ง Magento 2 แต่ห้ามใช้localhostใช้127.0.0.1ใน URL ร้านค้าและ URL ผู้ดูแลระบบ หลังจากติดตั้งสำเร็จอย่ารัน magento

ตอนนี้เรากำลังจะล้าง / ลบแคชและเซสชันของ Magento 2 ไปที่เส้นทางต่อไปนี้และลบทุกอย่าง:

ROOT > var > cache > *DELETE ALL*
ROOT > var > page_cache > *DELETE ALL*
ROOT > var > session > *DELETE ALL*

เมื่อ Magento 2 ไม่ได้อยู่ในโหมดการผลิตก็จะพยายามสร้าง symlink สำหรับแหล่งข้อมูลคงที่บนเซิร์ฟเวอร์ภายใน เราต้องเปลี่ยนพฤติกรรมของ Magento 2 โดยไปที่แก้ไขROOT > app > etc > di.xmlไฟล์ เปิดdi.xmlในเครื่องมือแก้ไขรหัสที่คุณชื่นชอบค้นหาvirtualType name="developerMaterialization"ส่วน ในส่วนด้านล่างคุณจะพบรายการ<item name="view_preprocessed" xsi:type="object">ที่ต้องแก้ไข คุณสามารถแก้ไขได้โดยการเปลี่ยนเนื้อหาต่อไปนี้:

Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink

ถึง:

Magento\Framework\App\View\Asset\MaterializationStrategy\Copy

ตอนนี้ขั้นตอนสุดท้ายลบไฟล์เก่าที่สร้างขึ้นด้วย ROOT > pub > static > DELETE ALL EXCEPT .HTACCESS

ฉันลองใช้งานบน localhost ของฉันโดยใช้ MAMP, EasyPHP DevServer, Xampp และ Wampp และติดตั้งสำเร็จแล้วและใช้ Magento 2 คุณสามารถตรวจสอบลิงค์นี้: Magento 2 CSS และ JavaScript ไม่โหลดจากโฟลเดอร์ที่ถูกต้อง

โซลูชั่น # 2

ติดตั้งนักแต่งเพลง ตอนนี้ฉันต้องการให้คุณดาวน์โหลด Magento 2 zip จากmagentocommerce.com/downloadสร้างdbใหม่ในphpmyadminแยก zip ในโฟลเดอร์htdocs ติดตั้ง Magento 2 แต่ห้ามใช้localhostใช้127.0.0.1ใน URL ร้านค้าและ URL ผู้ดูแลระบบ หลังจากติดตั้งสำเร็จอย่ารัน magento

ตอนนี้เรากำลังจะตรวจสอบการติดตั้งนักแต่งเพลงปรับใช้เนื้อหาแบบคงที่ล้างแคชล้างวีโอไอพีและทำดัชนีบล็อกของวีโอไอพี 2 อีกครั้ง หากต้องการดำเนินการทั้งหมดข้างต้นให้กดปุ่ม WINDOWS + R เพื่อเปิดกล่องโต้ตอบ RUN และพิมพ์“ cmd” เพื่อเปิดพร้อมรับคำสั่ง

พิมพ์“ cd PATH_TO_YOUR_MAGENTO2_FILES ” เพื่อป้อนในไดเรกทอรีวีโอไอพี 2 รูท

ตอนนี้เพื่อตรวจสอบการติดตั้งนักแต่งเพลงในไดเรกทอรีด้านบนให้พิมพ์“ การติดตั้งนักแต่งเพลง

หากคุณได้รับข้อผิดพลาดในขั้นตอนนี้โปรดตรวจสอบการติดตั้งนักแต่งเพลงของคุณ

ในขั้นตอนนี้เรากำลังตั้งค่าเนื้อหาแบบคงที่เพื่อปรับใช้ในร้านค้า Magento ของเรา ในการดำเนินการนี้ให้พิมพ์“ การตั้งค่า php bin / magento: static-content: deploy

หากคุณได้รับข้อผิดพลาดใด ๆ ให้ตรวจสอบ PHP.EXE และ PHP.INI Environment Variable ของคุณ

ล้าง / ล้างแคชวีโอไอพีโดยพิมพ์“ php bin / magento cache: flush ” ใน CMD

และในที่สุดก็ไปพิมพ์ Reindex Magento Static Blocks“ php bin / magento indexer: reindex

คุณติดตั้ง Magento 2 สำเร็จแล้ว


แก้ไขคำตอบแล้ว
Fayyaz Khattak

Greate! ฉันพยายามแก้ปัญหาที่ 1 และได้ผลสำหรับฉัน .. ขอบคุณ Khatak sb
Muhammad Azeem

ยินดีต้อนรับ @MuhammadAzeem
Fayyaz Khattak

@RajaKhoury คุณยินดีต้อนรับ!
Fayyaz Khattak

โซลูชันที่ 1 ใช้งานได้สำหรับฉัน! ขอบคุณมาก ๆ !!
Daniel Silva

5

พยายามเรียกใช้คำสั่งด้านล่าง

php bin/magento setup:static-content:deploy

และถ้ามันให้ข้อผิดพลาดใด ๆ ในขณะที่ใช้คำสั่งนี้เช่นไฟล์ที่ขาดหายไปตามที่คุณพูดแล้วให้เปรียบเทียบโครงสร้างไฟล์โครงการของคุณกับmagento2โครงสร้างไฟล์สด หากไฟล์ใดหายไปในโครงการของคุณให้คัดลอกไฟล์ที่เหมาะสมลงในโครงการของคุณ

และหากคุณมีข้อผิดพลาดอื่น ๆ ให้โพสต์ข้อผิดพลาดในคำถามของคุณเพื่อให้ใครบางคนสามารถตอบคำถามของคุณได้


ขอบคุณสำหรับการตอบสนองที่รวดเร็ว ฉันจะทำมัน. ฉันจะรันคำสั่งนี้ได้ที่ไหนและอย่างไร
Skovsgaard

@Skovsgaard คุณสามารถเรียกใช้คำสั่งนี้จากเทอร์มินัลของคุณ แต่ให้แน่ใจว่าคุณอยู่ในไดเรกทอรี magento2 จาก terminal
Keyur Shah

ดูเหมือนไม่มีไฟล์ใดหายไป วีโอไอพีที่ติดตั้งนั้นมีไฟล์จำนวนมากซึ่งเกี่ยวข้องกับกระบวนการติดตั้ง ฉันได้รับข้อผิดพลาดนี้: Fatal error: Class 'Locale' not found in /Applications/MAMP/htdocs/magento.dev/vendor/magento/framework/Locale/Bundle/DataBundle.php on line 64หลังจากทำงานphp bin/magento setup:static-content:deployในไดเรกทอรีราก
Skovsgaard

ฉันไม่ได้มีประโยชน์จริงๆ ขอโทษ
Skovsgaard

2

ดูเหมือน intlส่วนขยายไม่ได้โหลดในเวอร์ชันคอนโซลของ php โปรดตรวจสอบว่าคุณใช้เวอร์ชัน / การตั้งค่าเดียวกันสำหรับ apache และ cli เวอร์ชันของ php

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

PS: ฉันเสนอให้ใช้คนจรจัดบน Mac OS มันใช้งานได้ดีถ้าใช้ nfs สำหรับการแชร์ไฟล์


Aha! php (cli) ที่ติดตั้งไว้ล่วงหน้าเพียง 5.5.30 Apache ที่ติดตั้งล่วงหน้าคือ 2.4.16 (ฉันไม่ทราบวิธีตรวจสอบเวอร์ชัน Apache ของ MAMP ถ้า MAMP ติดตั้ง Apache แยกต่างหาก) ดังนั้นฉันต้องอัปเดตเวอร์ชันที่ติดตั้งล่วงหน้าเป็น 7 และติดตั้งส่วนขยาย intl (cli หรือ mamp?) หรือไม่ คนจรจัดดูสูงเกินไปสำหรับ noob อย่างฉัน
Skovsgaard

ฉันไม่สามารถตอบคำถามเฉพาะสำหรับ Mac ได้ แต่มีอย่างน้อยสองวิธีในการตรวจสอบเวอร์ชัน PHP ของคุณ: php -v(ซึ่งแสดงให้เห็นว่าคำสั่ง PHP เวอร์ชันใดทำงาน) และใช้phpinfo.phpซึ่งแสดงเวอร์ชันของ PHP เว็บเซิร์ฟเวอร์ที่ทำงาน
Steve Johnson

โอเคดังนั้น MAMP จึงรัน PHP 7 และ Apache 2.2.29 เครื่องท้องถิ่นของฉันใช้งาน PHP 5.5.30 และ Apache 2.4.16 ดังนั้นขั้นตอนต่อไปคือการอัพเดท PHP ของเครื่องท้องถิ่นเป็น 7?
Skovsgaard

โปรดลองใช้เส้นทางแบบเต็มไปยัง php7 binary
KAndy

2

หากสิ่งอื่นล้มเหลวให้ตัดไดเร็กทอรีเหล่านี้:

rm -rf pub/static/*    # DO NOT DELETE .htaccess
rm -rf var/view_preprocessed/*
php bin/magento setup:static-content:deploy

วิธีนี้จะใช้งานได้หากคุณมี symlink ที่เสียหายใน dirs เหล่านั้น


1
ไม่ควรลบ. htaccess ฉันทำผิดพลาดและเสียเวลาไปหลายชั่วโมง
Tahir Yasin

1

ล้าง page_cache, di, view_process, แคช

จากนั้นให้สิทธิ์ที่เหมาะสมกับโฟลเดอร์และไฟล์

จากนั้นเรียกใช้php bin/magento setup:static-content:deployจากโฟลเดอร์รูทของคุณ

ตรวจสอบผับ / คงที่

ฉันหวังว่านี่จะช่วยคุณได้


ฉันจะเรียกใช้ที่ไหนและclear page_cache, di ,view_process, cacheอย่างไร มันเป็นการติดตั้งในระบบดังนั้นในฐานะผู้ดูแลระบบซุปเปอร์คอมพิวเตอร์ของฉันฉันมีสิทธิ์อ่าน / เขียนสิทธิ์ทั้งหมด มีการอนุญาตอื่นใดที่ฉันไม่ทราบหรือไม่?
Skovsgaard

หากคุณใช้โลคัลมากกว่าให้สิทธิ์แบบเต็มในการรูทโฟลเดอร์
ปฏิเสธ vachhani

โฟลเดอร์ทั้งหมดอยู่ใน var / clear โฟลเดอร์ทั้งหมดและให้สิทธิ์อย่างเต็มที่กับโฟลเดอร์
ปฏิเสธ vachhani

1

คุณได้ติดตั้งcomposerและใช้งานcomposer initในไดเรกทอรี magento2 แล้วหรือยัง? หากไม่ลองก็ให้เรียกใช้คำสั่งphp bin/magento setup:static-content:deploy


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