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?

AlexandreC
źródło

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)

Petar Dzhambazov
źródło
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.

Tristan
źródło
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.

David Wilkinson
źródło
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.

MagentoMan
źródło
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 !!

Pierre-Verthume Larivière
źródło