Magento 2: Не отображаются картинки, проблемы с static контентом
В случае, когда вы работаете с различными версиями кодовой базы и базы данных, бывают случае когда на фронтенде перестают отображаться изображения, скрипты или стили - статический контент. Сегодня я расскажу об одном из способов исправления этой беды..
Начнем с того, что откроем консоль разработчика в браузере (F12), перейдем на вкладку Network, перезагрузим страницу и посмотрим на url ресурсов которые не открываются.
Версионирование
Если url указывает на что-то вроде: /static/version123123123/frontend/.../image.jpg , то нужно сравнить это с тем, что у вас находится в папке /pub/static/.. очень часто бывает, что файлы лежат внутри нее, но не в /static/version123123123/frontend/, а в /static/frontend/ - это указывает на то, что в базе данных у вас установлен флаг для версионирования статического контента. Версионирование используется для того, чтобы при обновлении статического контента, использовалась новая версия, а не закешированная.
Для того, чтобы избавиться от version123123123, есть два пути, первый, подходит для случаев, когда админка не работает должным образом. В таком случае, идем в базу данных и в таблице core_config_data находим запись с значением dev/static/sign в столбце path, для этого можно использовать запрос
1 2 3 |
SELECT * FROM `core_config_data` WHERE `path` LIKE '%dev/static/sign%' |
Если в столбце value установлено значение 1, то его нужно поменять на 0. Сделать это можно вот таким запросом:
1 2 3 |
UPDATE `core_config_data` SET `value`="0" WHERE `path` LIKE '%dev/static/sign%' |
Если же записи нет, то ее можно добавить такой командой
1 2 3 4 |
INSERT INTO `core_config_data` (`scope`, `scope_id`, `path`, `value`) VALUES ('default', 0, 'dev/static/sign', '0'); |
Второй вариант, подойдет если с админкой все ок, нужно сходить вот сюда
1 2 3 |
Magento Admin -> Stores -> Configuration -> Advanced -> Developer |
и изменить значение "Sign Static Files" с Yes на No
Редирект с http на https
Еще одной частой проблемой бывает, что после того как база скопирована с прода, на локальное окружение, были заменены url-ки в core_config_data, на что-то по типу http://site.local, но картинки все равно пытаются грузится с https://site.local. В таком случае, нужно проверить в core_config_data такие параметры и если они равны "1", то установить их в "0":
- web/secure/use_in_frontend
- web/secure/use_in_adminhtml
- web/url/redirect_to_base
Для этого можно выполнить такой SQL
1 2 3 4 5 6 7 8 |
UPDATE core_config_data SET value=0 WHERE path='web/secure/use_in_frontend' OR path='web/secure/use_in_adminhtml' OR path='web/url/redirect_to_base'; |
После этого, необходимо сбросить кеш
1 2 3 |
php bin/magento cache:clean |
Отсутствие статического контента
Другой частой проблемой, бывает отсутствие каких-либо файлов в папке /pub/static/ или их устаревшая версия. Для того, чтобы перегенерировать файлы в этой папке, нужно выполнить следующую команду:
1 2 3 |
php bin/magento setup:static-content:deploy |
В случае, если вам покажется ошибка, о том, что вы используете режим разработчика, то необходимо добавить параметр -f вот так
1 2 3 |
php bin/magento setup:static-content:deploy -f |
Теперь поговорим про очистку этой папки, удалить все файлы из нее можно командой
1 2 3 4 |
rm -R pub/static/* rm -R var/view_preprocessed/* |
выполненяются команды из корневой директории magent-ы.
Важной особенностью является то, что эта команда не затрагивает скрытые файлы, такие как например .htaccess
Тоже самое можно сделать используя админку, если она работоспособна
1 2 3 |
System -> Tools -> Cache Management -> [Flush Static Files Cache] |
Вывод
В данной статье я рассмотрел одну из самых распространенных проблем связанных с отсутствием статического контента: это отсутствие его как такового, в таком случае, его необходимо сгенерировать, а так же случае когда в настройках базы указанно использовать версионирование, а в кодовой базе оно не используется.
Author: | Tags: /
| Rating:
Leave a Reply