Pobrałem i zainstalowałem Magento 2 z https://github.com/magento/magento2
Ale dostaję błąd 404 dla skryptów i cs znajdujących się w http: // localhost / magento2 / pub / static /
Sprawdziłem, silnik przepisywania Apache jest włączony. Ale nadal pliki css i js nie ładują się.
Kiedy próbuję uzyskać dostęp do pliku bezpośrednio z przeglądarki, daje to następujący wyjątek.
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}
Mój system operacyjny to Windows 7 i korzystam z serwera xampp.
Odpowiedzi:
Gdy nie jest w trybie produkcyjnym, Magento 2 spróbuje utworzyć dowiązania symboliczne dla niektórych zasobów statycznych. Możesz zmienić to zachowanie, wykonując następujące czynności.
Otwórz
app/etc/di.xml
i znajdźvirtualType name="developerMaterialization"
sekcję. W tej sekcji znajdziesz elementname="view_preprocessed"
, który należy zmodyfikować lub usunąć. Możesz to zmienić, zmieniając zawartość zMagento\Framework\App\View\Asset\MaterializationStrategy\Symlink
naMagento\Framework\App\View\Asset\MaterializationStrategy\Copy
Usuń pliki w pub / static, aby pozbyć się wszelkich istniejących dowiązań symbolicznych. Możesz być ostrożny, aby nie usunąć
.htaccess
pliku.To powinno rozwiązać twój problem z dowiązaniem symbolicznym.
źródło
Stawiłem czoła temu problemowi i staram się to rozgryźć. Zgadzam się z Chrisem O'Toole. Dodam dodatkowy krok. Moje kroki to
Zamień dowiązanie symboliczne na Kopiuj słowo. Zapisać.
Usuń wszystkie foldery w pub / static. Nie usuwaj plików .htaccess i innych plików.
Uruchom xampp jako administrator. Uruchom wiersz poleceń jako administrator. Uruchom
grunt exec:<theme name>
.Zobaczysz, że działa dobrze.
Potem możesz biec
grunt less:<theme name>
Wreszcie możesz biegać
grunt watch
Po wprowadzeniu jakichkolwiek zmian w mniejszej liczbie plików (_theme.less lub _extend.less) automatycznie utworzysz pliki css typu l i style-m w folderze pub / static.
Korzystam z Magento 2.1 w Windows 10.
źródło
Pamiętaj, aby zaktualizować uprawnienia do plików po utworzeniu tych nowych plików statycznych przez Magento. Nie są własnością www-data, więc podadzą 404.
źródło
W moim przypadku nie było tak, ponieważ mój
app/etc/di.xml
miał,Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink
jak wspomniano w @Chrish. Stało się tak, ponieważ jeden z moich modułów miał błąd skryptu w moim.phtml
pliku. Polecam sprawdzić swój kod w.phtml
pliku. W moim przypadku problem został rozwiązany przez poprawienie mojego pliku skryptuinitialize.phtml
.źródło
Uważam, że ważne jest użycie poprawnego uprawnienia dla apache z mod_php dla pub / static i var / folderów. Z artykułu Alan Storm http://alanstorm.com/magento_2_adding_frontend_files_to_your_module
Powinieneś to zrobić w terminalu serwera. To naprawiło mnie błąd 404 dla skryptów i obrazów.
ps Ale to dotyczy Linuksa.
źródło
chmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
Myślę, że właściwy sposób to zrobić z wiersza poleceń: cd do katalogu magento i uruchom następujące polecenie:
Opróżnij
var/cache
katalog i sprawdź.źródło
Właśnie usunąłem wszystkie pliki w obszarze
pub/static/*
. Magento automatycznie wygeneruje dla ciebie pliki statyczne po załadowaniu strony.źródło
Musisz uruchomić Xampp (apache, nginx) itp. Jako Administrator, aby zezwolić mu na tworzenie dowiązań symbolicznych pod Windows (testowane z Windows 10).
źródło