Tryb programisty Magento 2 nie regeneruje automatycznie plików statycznych


15

Mam instalację Magento 2.0.2 w trybie programisty i nadal nie mogę wymyślić, jak zmusić ją do ponownego wygenerowania plików widoku statycznego za każdym razem, gdy wprowadzam zmiany w CSS.

Sprawdziłem, czy działam w trybie programisty php bin/magento deploy:mode:show

Na tej stronie jest napisane, że tryb programisty wyłącza buforowanie plików widoku statycznego, ale nie jest tak w moim przypadku.

Próbowałem edytować di.xmljak wspomniano w tym rozwiązaniu, ale nie zmieniło to zachowania Magento.

Jak mogę powiedzieć magento, aby automatycznie regenerowało pliki widoku statycznego?

Odpowiedzi:


4

W trybie programisty M2 nie generuje plików statycznych. Powinien tworzyć do nich dowiązania symboliczne z różnych modułów. Jeśli jednak uruchomiłeś setup: static-content: wdróż i umieść te pliki w miejscu, nie zaktualizuje ich. Spróbuj usunąć wszystkie pliki statyczne i sprawdź, czy Magento do nich prowadzi (uważaj, aby nie usunąć rzeczywistych plików, jeśli masz dowiązania symboliczne)


1
Próbowałem usunąć całą zawartość pub / static (bez usuwania pliku .htaccess) i nie działało. Wygląda na to, że stare pliki zostały zregenerowane.
— AlexandreC,

Obecnie jedynym sposobem na uzyskanie zaktualizowanej zawartości jest kliknięcie opcji „Opróżnij pamięć podręczną plików statycznych” na stronie zarządzania pamięcią podręczną Magento.
— AlexandreC,

4
Miałem ten sam problem, że dowiązania symboliczne nie były generowane w trybie programisty; wtedy zdałem sobie sprawę, że usunąłem .htaccesplik pub/static; po przywróceniu .htaccesspliku w pub/staticnastępnym żądaniu ponownie wygenerowałem wszystkie dowiązania symboliczne; mam nadzieję, że to pomoże.
— Alessandro Ronchi,

Mam ten sam problem z Magento 2.0.6. Próbowałem ponownie dodać .htaccessplik (uruchamiam nginx, więc nie sądziłem, że zrobi to dużo) i zgodnie z oczekiwaniami nie działał. Wcześniej moje dowiązania symboliczne były tworzone, ale teraz już nie są ...
— Giel Berkers

1
Ponieważ myśleliśmy, że i tak pub/staticjest generowany automatycznie, w pewnym momencie usunęliśmy go ręcznie i napotkaliśmy ten sam problem. Wygląda na to, że w naszej instalacji apache2 / php7 brakujący plik .htaccess jest za to naprawdę odpowiedzialny. Po odtworzeniu oryginalnego trybu programisty .htaccess znów działał dobrze. Oto link do ostatnich .htacces: github.com/magento/magento2/blob/develop/pub/static/.htaccess
— Jey DWork

1

To samo mi się przydarzyło. Po przeniesieniu strony na inny serwer okazało się, że nie ustawiłem poprawnych uprawnień do plików.

Pobiegłem find . -type d -exec chmod 770 {} \; && find . -type f -exec chmod 660 {} \; && chmod u+x bin/magentoi to rozwiązało mój problem.

Więcej informacji: Magento 2: Zalecane uprawnienia do plików dla hostingu współdzielonego

Aktualizacja: upewnij się, że folder pub (magento / pub) i foldery bazowe mają uprawnienia do odczytu i zapisu.


2
Ktokolwiek przegłosował: dlaczego?
— Chris K

0

Trochę późno tutaj, ale miałem ten sam problem. Miałem developerwłączony tryb przez jakiś czas, a potem z jakiegoś powodu (prawdopodobnie błąd z mojej strony w pewnym momencie), to już nie działało.

Prostym rozwiązaniem było dla mnie ponowne zresetowanie trybu do programisty:

php bin/magento deploy:mode:show developer

Uwaga: Może być konieczne ustawienie go defaulti wtedy developer.


To też nie pomogło. Jakieś inne sugestie?
— Adarsh ​​Khatri

0

Napotkałem ten sam problem, ponieważ moje mniej aktualizacji zauważyło wyświetlanie, chyba że wyczyściłem pliki statyczne. Rozwiązaniem było dla mnie wyłączenie mod_expires. To było buforowanie css itp.

Wewnątrz pub/static/.htaccesspliku powinieneś mieć coś takiego:

<IfModule mod_expires.c>

############################################
## Add default Expires header
## http://developer.yahoo.com/performance/rules.html#expires

    ExpiresActive On

    # Data
    <FilesMatch \.(zip|gz|gzip|bz2|csv|xml)$>
        ExpiresDefault "access plus 0 seconds"
    </FilesMatch>
    ExpiresByType text/xml "access plus 0 seconds"
    ExpiresByType text/csv "access plus 0 seconds"
    ExpiresByType application/json "access plus 0 seconds"
    ExpiresByType application/zip "access plus 0 seconds"
    ExpiresByType application/x-gzip "access plus 0 seconds"
    ExpiresByType application/x-bzip2 "access plus 0 seconds"

    # CSS, JavaScript, html
    <FilesMatch \.(css|js|html|json)$>
        ExpiresDefault "access plus 1 year"
    </FilesMatch>
    ExpiresByType text/css "access plus 1 year"
    ExpiresByType text/html "access plus 1 year"
    ExpiresByType application/javascript "access plus 1 year"
    ExpiresByType application/json "access plus 1 year"

    # Favicon, images, flash
    <FilesMatch \.(ico|gif|png|jpg|jpeg|swf|svg)$>
        ExpiresDefault "access plus 1 year"
    </FilesMatch>
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"

    # Fonts
    <FilesMatch \.(eot|ttf|otf|svg|woff|woff2)$>
        ExpiresDefault "access plus 1 year"
    </FilesMatch>
    ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
    ExpiresByType application/x-font-ttf "access plus 1 year"
    ExpiresByType application/x-font-otf "access plus 1 year"
    ExpiresByType application/x-font-woff "access plus 1 year"
    ExpiresByType application/font-woff2 "access plus 1 year"

</IfModule>

Wyłączając mod_expireslub komentując powyższe i wykonując twarde odświeżanie w przeglądarce (użytkownicy komputerów Mac przytrzymują Shift + Command + r), zmiany powinny zacząć się wyświetlać za każdym razem, gdy je wprowadzasz.


0

Właśnie miałem ten problem!

Okazuje się, że w moim przypadku chodziło o pozwolenie.

cat /etc/apache2/logs/error_log | grep static

i

tail -f / etc / apache2 / logs / error_log | grep static

dostarczył mi ciekawych informacji (być może twój plik dziennika może mieć inną nazwę)

najpierw zobaczyłem:

[Wed Oct 30 12:19:34.287356 2019] [core:crit] [pid 27633] (13)Permission denied: [client 24.48.87.7:16680] AH00529: /home/[datuser]/public_html/pub/static/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/home/[datuser]/public_html/pub/static/' is executable

okazało się, że mój folder pub / static nie był wykonywalny. Potem to naprawiłem

[Wed Oct 30 12:22:46.490759 2019] [:error] [pid 27290] [client ipremoved] SoftException in Application.cpp:267: File "/home/[datuser]/public_html/pub/static.php" is writeable by group, referer: [url removed]
[Wed Oct 30 12:22:46.490961 2019] [core:error] [pid 27290] [client ipremoved] End of script output before headers: static.php, referer: [url removed]

Na naszym serwerze Apache nie mogę podawać plików, które z jakiegoś powodu mogą być zapisywane grupowo, niektóre zabezpieczenia Cpanel uważam. Musiałem więc ustawić 644 na wszystkie pliki w pubie i wreszcie zaczęły się tworzyć moje dowiązania symboliczne !!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.