Betikler ve css için Magento 2 404 hatası


39

Magento 2'yi https://github.com/magento/magento2 adresinden indirip yükledim.

Ancak http: // localhost / magento2 / pub / static / 'da bulunan betikler ve cs için 404 hatası alıyorum

Kontrol ettim, Apache yeniden yazma motoru açık. Ancak yine de, css ve js dosyası yüklenmiyor.

Bir dosyaya doğrudan tarayıcıdan erişmeye çalıştığımda, aşağıdaki istisnaları veriyor.

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}

İşletim sistemim Windows 7 ve xampp sunucusu kullanıyorum.


Bunun 2015 yılında sorulduğunun farkına varın, ancak başkalarının hala bu gönderiye bakmaları durumunda, gitmeden magento alamamalısınız. Bunu yalnızca bir çekme isteği gönderiyorsanız yaparsınız. Magento, sitenin indirme bölümünden indirilmeli veya besteci tarafından kurulmalıdır.
Dominic Xigen

Yanıtlar:


86

Üretim modunda değilken, Magento 2 bazı statik kaynaklar için sembolik bağlantılar oluşturmaya çalışacaktır. Aşağıdakileri yaparak bu davranışı değiştirebilirsiniz.

  1. app/etc/di.xmlve virtualType name="developerMaterialization"bölümü bul . Bu bölümde name="view_preprocessed", değiştirilmesi veya silinmesi gereken bir öğeyi bulacaksınız . İçeriğini değiştirerek değiştirebilirsiniz Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink.Magento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. Var olan sembolik bağlantılardan kurtulmak için pub / static altındaki dosyaları silin. Dosyayı silmemeye dikkat etmek isteyebilirsiniz .htaccess.

Bu, hatayı sembolik bağlantıda çözmelidir.


2
Sadece pub / statik klasörü silmek benim için çalıştı.
Adam Moss

4
Benim durumumda pub / statik içeriği silmek yeterli değil. Cilt bağlantısının iyi olması için yukarıdaki bağlantıda belirtildiği gibi Symlink'i Copy (Kopyala) olarak değiştirmek zorunda kaldım.
Haijerome 11:15

2
Bir cazibe gibi çalıştı ... !!!!
Neeraj Garg

2
Bu benim için işe yaramadı, hatta / pub / static klasörünü silmiyordu. Başka fikrin var mı?
goncalotomas

2
Benim için çalışmıyor:
Alaa M. Jaddou

7

Bu sorunla karşılaştım ve anlamaya çalıştım. Chris O'Toole ile aynı fikirdeyim. Ekstra adım ekleyeceğim. Adımlarım

  1. / Etc / di.xml dosyasını açın ve Symlink'te arama yapın. Aşağıdaki bölümde kontrol edin.
<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>

Kopyala sözcüğü ile Symlink değiştirin. Kayıt etmek.

  1. Pub / static içindeki tüm klasörleri silin. .Htaccess ve diğer dosyaları silmeyin.

  2. Xampp'i yönetici olarak çalıştırın. Yönetici olarak komut satırını çalıştırın. Run grunt exec:<theme name>.

görüntü tanımını buraya girin

İyi çalıştığını göreceksiniz.

Sonra koşabilirsin grunt less:<theme name>

görüntü tanımını buraya girin

Sonunda koşabilirsin grunt watch

görüntü tanımını buraya girin

Daha az dosyada herhangi bir değişiklik yaptığınızda (_theme.less veya _extend.less) otomatik olarak pub / static klasöründe style-l ve style-m css dosyaları oluşturur.

Magento 2.1'i Windows 10'da çalıştırıyorum.


Aslında ilk adıma ihtiyacımız yok.
cha

2

Magento bu yeni statik dosyaları oluşturduktan sonra dosya izinlerini güncellemeyi unutmayın. Onlar www-data'ya ait değil, 404 verecekler.


1

Benim çünkü Benim durumumda değildi app/etc/di.xmletmişti Magento\Framework\App\View\Asset\MaterializationStrategy\Symlinkolarak @Chrish bahsettiği. Çünkü modülümden birinin dosyamda komut dosyası hatası vardı .phtml. Kodunuzu .phtmldosyada kontrol etmenizi tavsiye ederim . Benim durumumda komut dosyası dosyamda düzeltme yapılarak çözüldü initialize.phtml.


0

Pub / static ve var / klasörler için mod_php ile apache'nin doğru iznini kullanmamın önemli olduğunu gördüm. Alan Storm makalesinden 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 '{}' + 

Bunu sunucu terminalinde çalıştırmalısınız. Bu senaryo ve görüntüler için bana 404 hatası düzeltti.

ps Ama bu Linux için.


Ayrıcachmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano 12:17

0

Bunu yapmanın doğru yolunun komut satırından geldiğini düşünüyorum: cd magento dizininize ve şu komutu çalıştırın:

php bin/magento setup:static-content:deploy

var/cacheDizini boşalt ve kontrol et.


0

Sadece altındaki tüm dosyaları sildim pub/static/*. Bir sayfa yüklediğinizde, Magento sizin için statik dosyaları otomatik olarak oluşturur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.