Режим розробника Magento 2 не регенерує статичні файли автоматично


15

У мене встановлення Magento 2.0.2 в режимі розробника, і я досі не можу зрозуміти, як змусити її відновлювати файли статичного перегляду кожного разу, коли я вношу зміни в CSS.

Я перевірив, що перебуваю в режимі розробника, запустивши php bin/magento deploy:mode:show

На цій сторінці написано, що режим розробника вимикає кешування файлів статичного перегляду, але це не так для мене.

Я спробував відредагувати те di.xml, що згадувалося в цьому рішенні, але це не змінило поведінки Магенто.

Як я можу сказати magento для автоматичного відновлення файлів статичного перегляду?

Відповіді:


4

У режимі розробника M2 не генерує статичні файли. Він повинен створювати посилання на них з різних модулів. Якщо ви все-таки запустили налаштування: static-content: розгорніть та встановіть ці файли, вони не оновлюватимуть їх. Спробуйте видалити всі статичні файли і подивіться, чи Magento посилається на них (будьте обережні, щоб не видаляти фактичні файли, якщо у вас є посилання)


1
Я спробував видалити весь вміст pub / static (не видаляючи .htaccess файл), і він не працював. Схоже, старі файли були відновлені.
AlexandreC

Наразі єдиний спосіб отримати оновлений вміст - натиснути кнопку "Очистити кеш статичних файлів" на сторінці управління кешами Magento.
AlexandreC

4
У мене була та сама проблема, що символьні посилання не створюються в режимі розробника; потім я зрозумів, що я видалив .htaccesфайл pub/static; як тільки я відновив .htaccessфайл у pub/staticнаступному запиті, відновив усі посилання; сподіваюся, що це допомагає.
Алессандро Рончі

У мене зараз така ж проблема з Magento 2.0.6. Спробував повторне додавання .htaccessфайлу (я запускаю nginx, тому не думав, що це буде багато), і, як очікувалося, він не працював. Раніше мої символьні посилання були створені, але тепер уже не ...
Джіл Беркерс

1
Як ми думали, pub/staticце все-таки автогенерується, ми також видалили його вручну в один момент і зіткнулися з тією ж проблемою. Схоже, в нашій установці apache2 / php7 відсутній файл .htaccess справді несе відповідальність за це. Після відтворення оригінального режиму розробника .htaccess знову працював нормально. Тут посилання на останні .htacces: github.com/magento/magento2/blob/develop/pub/static/.htaccess
Jey DWork

1

Те саме сталося і зі мною. Після переміщення сайту на інший сервер виявилося, що я не встановив права доступу до файлів правильними.

Я побіг find . -type d -exec chmod 770 {} \; && find . -type f -exec chmod 660 {} \; && chmod u+x bin/magentoі це вирішило мою проблему.

Більше інформації: Magento 2: Рекомендований дозвіл на файл для спільного хостингу

Оновлення: переконайтеся, що папка pub (magento / pub) та папки, що лежать в основі, мають дозволи на читання та запис.


2
Хто кого не підтримує: чому?
Кріс К

0

Тут трохи пізно, але у мене виникло те саме питання. У мене developerввімкнувся режим деякий час, то чомусь (ймовірно, помилка з мого боку в якийсь момент), він більше не здавався.

Просте рішення для мене було знову скинути режим на розробника:

php bin/magento deploy:mode:show developer

NB: Вам може знадобитися встановити його defaultі потім developer.


Це також не допомогло. Будь-які інші пропозиції?
Адарш Хатрі

0

Я стикався з тією самою проблемою, коли мої оновлення не помічали, якщо я не промив статичні файли. Для мене виправлення було відключити mod_expires. Це кешувало css тощо.

Всередині pub/static/.htaccessфайлу у вас має бути щось на зразок наступного:

<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>

Якщо вимкнути mod_expiresабо прокоментувати вищезазначене та провести оновлення у веб-переглядачі (користувачі Mac утримують Shift + Command + r), ваші зміни повинні почати відображатися щоразу, коли ви їх вносите.


0

У мене теж було це питання!

Виявляється, у моєму випадку це була проблема дозволу.

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

і

хвост -f / etc / apache2 / logs / error_log | греп статичний

дав мені цікаву інформацію (можливо, ваш файл журналу може бути названий інакше)

Перший я побачив:

[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

виявилося, що моя папка / статична папка не виконується. Потім після виправлення, що я отримав

[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]

На нашому сервері apache не може обслуговувати файли, які чомусь можуть записуватися групами, деякі матеріали безпеки Cpanel, я вважаю. Тому мені довелося встановити 644 на всі файли під паб, і нарешті мої символьні посилання почали створюватися !!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.