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

14

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

Я проверил, что я в режиме разработчика, запустив php bin/magento deploy:mode:show

На этой странице написано, что в режиме разработчика отключено кэширование статических файлов, но это не так.

Я попытался отредактировать, di.xmlкак упомянуто в этом решении, но это не изменило поведение Magento.

Как я могу сказать magento автоматически восстанавливать файлы статического просмотра?

AlexandreC
источник

Ответы:

4

В режиме разработчика M2 не генерирует статические файлы. Он должен создавать символические ссылки на них из различных модулей. Однако если вы запустили setup: static-content: deploy и эти файлы на месте, они не будут обновлены. Попробуйте удалить все статические файлы и посмотрите, ссылается ли Magento на них (будьте осторожны, чтобы не удалить реальные файлы, если у вас есть символические ссылки)

Петар Джамбазов
источник
1
Я попытался удалить весь контент pub / static (без удаления файла .htaccess), и это не сработало. Похоже, старые файлы были восстановлены.
AlexandreC
В настоящее время единственный способ получить обновленное содержимое - щелкнуть «Очистить кэш статических файлов» на странице управления Magento Cache.
AlexandreC
4
У меня была та же проблема, что символические ссылки не генерируются в режиме разработчика; потом я понял, что удалил .htaccesфайл из pub/static; как только я восстановил .htaccessфайл в pub/staticследующем запросе, восстановил все символические ссылки; Надеюсь, это поможет.
Алессандро Рончи
У меня та же проблема в настоящее время с Magento 2.0.6. Попытался повторно добавить .htaccess-file (я запускаю nginx, так что я не думал, что это будет много), и, как и ожидалось, это не сработало. Раньше мои символические ссылки создавались, но теперь уже нет ...
Гиль Беркерс
1
Так как мы думали, что все pub/staticравно автоматически генерируется, мы также удалили его вручную в одной точке и столкнулись с той же проблемой. Похоже, что в нашей настройке apache2 / php7 теперь отсутствует отсутствующий файл .htaccess. После воссоздания исходного режима разработчика .htaccess снова работал нормально. Вот ссылка на недавний .htacces: github.com/magento/magento2/blob/develop/pub/static/.htaccess
Джи 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), ваши изменения должны отображаться каждый раз, когда вы их вносите.

MagentoMan
источник
0

У меня тоже была эта проблема!

Оказывается, в моем случае это была проблема с разрешением.

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

и

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

дал мне интересную информацию (возможно, ваш файл журнала может быть назван по-другому)

Сначала я увидел:

[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

оказалось, что моя папка pub / static не была исполняемой. Потом после исправления что я получил

[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 для всех файлов в pub, и, наконец, мои символические ссылки начали создаваться !!

Pierre-Verthume Larivière
источник