Сторінка 2 - Виправлення помилок
Learn how to fix different Magento issues and avoid them in the future
- 3 хв читання
Нещодавно ми отримали помилку " схема data-vocabulary.org застаріла та більше не підтримується Google. Будь ласка, перейдіть на використання типів schema.org. "Помилка перевірки однієї зі сторінок нашого веб-сайту. Така сама помилка, як і в Google Search Console.
Ця помилка "схема data-vocabulary.org застаріла" пов'язана зі структурою даних breadcrumbs. Ми використовували схему "data-vocabulary.org/Breadcrumb" для структурованих даних, але Google більше її не підтримує.
Ви також можете отримувати цю помилку, починаючи з 6 квітня 2020 року, якщо ви не конвертували свою схему структурованих даних з data-vocabulary.org на schema.org.
Перш ніж ми перейдемо до того, як виправити помилку «data-vocabulary.org schema deprecated», давайте дещо прояснимо.
Що таке структуровані дані?
Це специфічний код HTML або JSON на веб-сторінці, який допомагає роботам пошукових систем легше аналізувати сторінку та структурувати вміст для кращого розуміння. Коли ваша сторінка має багато елементів, пошуковим системамihor
- 1 хв читання
Якщо ви використовуєте Magento 2 і отримуєте помилку типу
Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:error:14095126:SSL routines:ssl3_read_n:unexpected eof while reading in vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php on line 72Trace:<pre>#1 file_get_contents() called at [vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php:72]#2 ReCaptcha\RequestMethod\Post->submit() called at [vendor/google/recaptcha/src/ReCaptcha/ReCaptcha.php:156]#3 ReCaptcha\ReCaptcha->verify() called at [app/code/MSP/ReCaptcha/Model/Validate.php:79]#4 MSP\ReCaptcha\Model\Validate->validate() called at [app/code/MSP/ReCaptcha/Observer/ReCaptchaObserver.php:93]#5 MSP\ReCaptcha\Observer\ReCaptchaObserver->execute() called at [vendor/magento/framework/Event/Invoker/InvokerDefault.php:72]#6 Magento\Framework\Event\Invoker\InvokerDefault->_callObserverMethod() called at [vendor/magento/framework/Event/Invoker/InvokerDefault.php:60]...
під час спроби входуihor
- 1 хв читання
У версії 2.9.3 ми додали функцію, про яку просили багато клієнтів, а саме «використовувати шаблон пов’язаних товарів з каталогу за замовчуванням» замість власного шаблону пов’язаних товарів з блогу. Це допомагає автоматично відображати пов’язані товари на сторінці допису в темі дизайну. Коміт, пов’язаний із цією зміною, можна знайти за адресою GitHub.
На жаль, для Magento 2 існують тисячі тем, і деякі з них мають специфічний JS та CSS (наприклад, тема Porto). Тому, якщо ви використовуєте розширення Blog версії 2.9.3 або вище, і блок пов’язаних товарів виглядає погано, спробуйте зробити наступне:
1. Створіть новий файл у каталозі вашої теми:
app/design/frontend/ThemeVendor/themename/Magefan_Blog/layout/blog_post_view.xml
2. Додайте в нього цей код:
<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceBlock name="blog.post.relatedproducts" > <arguments>ihor
- 1 хв читання
Сьогодні (12 лютого 2020 р.) нас повідомили про потенційну проблему безпеки в нашому завдяки Daniel Sloof від твіт.
Переглянувши код та поспілкувавшись з Derrick Heesbeen, Lewis Voncken з experius.nl , було виявлено проблему безпеки.
Зверніть увагу, що на сьогоднішній день жодних підтверджених атак, пов’язаних із цією проблемою, не було, проте зловмисники потенційно змогли увійти до облікового запису клієнта за короткий проміжок часу після того, як користувач з правами адміністратора натиснув кнопку «Увійти як клієнт» на панелі адміністратора та до того, як користувач з правами адміністратора був перенаправлений на вітрину магазину та фактично увійшов у систему.
Час дуже важливий для відтворення цієї проблеми. Проблема безпеки може виникати на всіх версіях «Увійти як клієнт» до версії 2.2.3 протягом кількох секунд після натискання кнопки «Увійти як клієнт».
Ми рекомендуємо всім, хто використовує розширення «Увійти як клієнт» версії 2.0.0 - 2.2.2, оновити його до оновіть розширенняihor
- 1 хв читання
Бувають випадки, коли бічна панель Magento відсутня та не відображається. Найімовірніше, це пов'язано з тим, що контейнер " sidebar " або " sidebar.additional " було видалено з макета вашої теми.
Щоб виправити цю проблему, виконайте наведені нижче дії:
1. Знайдіть remove="true" у XML-файлах макета теми. Для цього вам потрібно перевірити всі ці файли в нашій темі загалом:
app/design/frontend/ThemeVendor/themename/*/layout/*.xml
* - означає будь-які папки, імена файлів.
2. Видаліть або закоментуйте рядки, які виглядають як
<referenceContainer name="sidebar" remove="true" />
або
<referenceContainer name="sidebar.additional" remove="true" />
3. Збережіть зміни.
4. Очистіть кеш Magento та перевірте.
Якщо це не працює, будь ласка, зробіть те саме, але замість папки теми перевірте папки розширень, які знаходяться в app/code або vendor , або переконайтеся, що ваша сторінка не використовує макет 1column або empty .
- 1 хв читання
Якщо ваш пошук не працює, найімовірніше, проблема у вашій темі, яка перевизначає оригінальні шаблони блогу та файли макета.
Спробуйте виконати такі кроки:
1. Переконайтеся, що у вас остання версія модуля блогу Magento 2.
2. Спробуйте тимчасово видалити XML-файли макета блогу та PHTML-файли шаблону з вашої теми по одному та запустіть розгортання статичного контенту. Знайшовши файл, який викликає проблему, зверніть на нього увагу.
3. Перевірте, чи має кнопка пошуку блогу на бічній панелі атрибут "disabled" (вимкнено). Якщо так, то вона вимкнена (неактивна), і це може бути причиною проблеми. У цьому випадку знайдіть код, який робить її вимкненою. Атрибут disabled можна додати безпосередньо через файл .phtml у вашій темі або за допомогою JavaScript. Якщо ви не можете її знайти, ви можете вставити цей JS-скрипт, щоб скасувати активацію кнопки:
<script>require(['jquery', 'domReady!'], function($) { setInterval(function(){ $('#blog_search_mini_form .action.search').removeAttr('disabled');ihor
- 2 хв читання
Проблема « Ключ продукту порожній або недійсний. Розширення було автоматично вимкнено. Проблема » виникає з трьох поширених причин. Зазвичай це пов’язано з використанням застарілої версії модуля Magefan_Communty, завантаженням безкоштовної версії модуля для Magento Commerce або використанням розширення Translation v2.2.9.
Давайте подивимося, що можна зробити, щоб виправити цю проблему в різних випадках.
Рішення для Magento з відкритим кодом (CE)
Якщо ви отримуєте цю помилку під час збереження розширення Magefan у версії Magento Community і не бачите жодного поля Ключ продукту , як на скріншоті:
переконайтеся, що у вас встановлена остання версія розширення Magefan Community .
Примітка: Спільнота Magefan не є блогом Magefan і не є входом до Magefan як клієнта. Це окремий модуль, який використовується разом з усіма розширеннями Magefan .
Щоб перевірити версію розширення Magefan Community, перегляньте один із цих файлів:
app/code/Magefan/Community/composer.jsonapp/code/Magefan/Community/etc/module.xmlvendor/magefan/module-community/composer.jsonvendor/magefan/module-community/etc/module.xmlihor
- 1 хв читання
Іноді замість реальної IP-адреси клієнта ви можете побачити 127.0.0.1 або якусь іншу неправильну IP-адресу клієнта в панелі адміністратора Magento 2. Це може бути пов'язано з проксі-серверами, такими як Varnish, Cloudflare, Sucuri.net, , які можуть бути ввімкнені для вашого магазину Magento 2.
Щоб вирішити проблему з неправильною IP-адресою, вам потрібно:
1. Створіть новий файл у каталозі M2:
app/etc/XIP/di.xml
2. Вставте код:
<?xml version="1.0"?><config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Framework\HTTP\PhpEnvironment\RemoteAddress"> <arguments> <argument name="alternativeHeaders" xsi:type="array"> <item name="x-client-ip" xsi:type="string">HTTP_X_REAL_IP</item> <item name="x-cf-connecting-ip" xsi:type="string">HTTP_CF_CONNECTING_IP</item> <!-- <item name="x-cf-mfcustom-ip" xsi:type="string">SOME_CUSTOM_SERVER_KEY</item> --> </argument>ihor
- 1 хв читання
Коли ви виконуєте команду Magento 2 CLI "bin/magento..." і отримуєте помилку:
Allowed memory size of xxxx bytes exhausted (tried to allocate xxx bytes)
Ви можете легко виправити це за допомогою цієї команди замість bin/magento:
php -dmemory_limit=-1 bin/magento ....
Приклади:
php -dmemory_limit=-1 bin/magento setup:upgrade
php -dmemory_limit=-1 bin/magento setup:di:compile
Ця помилка пов'язана з налаштуванням обмеження пам'яті в PHP. Параметр-dmemory_limit=-1 дозволяє запускати PHP в CLI без обмежень пам'яті.
Ви також можете змінити конфігурації memory_limit (файл php.ini).
- 1 хв читання
Якщо ви встановили або оновили розширення Magento 2 та отримали повідомлення про помилку, наприклад:
Module 'Company_Module' from 'app/code/Company/Module' has been already defined in 'vendor/company/module'.
, це означає, що у вас є 2 версії розширення:
1) у папці app/code/ Company/ Module 2) у папці vendor/ company/ module
У папці vendor Magento зберігає всі компоненти (розширення, теми, мовні пакети), які були встановлені за допомогою Composer.
Оскільки встановлення або оновлення розширень через Composer є кращим, вам потрібно видалити папку розширення app/code/Company/Module (не забудьте про резервну копію перед видаленням) та виконати команди встановлення.
Приклад:
Якщо ви отримуєте помилку:
Module 'Foo_Bar' from 'app/code/Foo/Bar' has been already defined in 'vendor/foo/module-bar'.
Вам потрібно:
1. Зробіть резервну копію папки "app/code/Foo/Bar"
2. Видаліть "app/code/Foo/Bar".
3. Виконайте команди
php bin/magento setup:upgradephp bin/magento setup:di:compilephp bin/magentoihor
- 1 хв читання
Якщо ви використовуєте Magento 2.2.x або новішої версії та отримуєте повідомлення про помилку:
1 exception(s):
Exception #0 (Magento\Framework\Config\Dom\ValidationException): Element 'block', attribute 'class': [facet 'pattern'] The value '\Magento\Framework\View\Element\Text\ListText' is not accepted by the pattern '[A-Z][_a-zA-Z\d]*(\\[A-Z][_a-zA-Z\d]*)*'.
Line: 982
Element 'block', attribute 'class': '\Magento\Framework\View\Element\Text\ListText' is not a valid value of the atomic type 'blockClassType'.
Line: 982
Exception #0 (Magento\Framework\Config\Dom\ValidationException): Element 'block', attribute 'class': [facet 'pattern'] The value '\Magento\Framework\View\Element\Text\ListText' is not accepted by the pattern '[A-Z][_a-zA-Z\d]*(\\[A-Z][_a-zA-Z\d]*)*'.
Line: 982
Element 'block', attribute 'class': '\Magento\Framework\View\Element\Text\ListText' is not a valid value of the atomic type 'blockClassType'.
Line: 982
Вам потрібно перевірити всі файли макетів у вашій темі та користувацькихihor
- 1 хв читання
Якщо ви отримуєте повідомлення про помилку " Немає такої сутності .", " Немає такої сутності з " або " Немає такої сутності з customerId " у Magento 2, проблема зазвичай виникає під час спроби завантажити неіснуючий об'єкт через клас репозиторію Magento 2.
Щоб налагодити це , відкрийте наступний файл:
vendor/magento/framework/Exception/NoSuchEntityException.php
та на початку методу __construct тимчасово додайте код зворотного трасування налагодження:
foreach (debug_backtrace() as $_stack) { echo ($_stack["file"] ? $_stack["file"] : '') . ':' . ($_stack["line"] ? $_stack["line"] : '') . ' - ' . ($_stack["function"] ? $_stack["function"] : '');}exit();
приклад:
public function __construct(Phrase $phrase = null, \Exception $cause = null, $code = 0) {
foreach (debug_backtrace() as $_stack) { echo ($_stack["file"] ? $_stack["file"] : '') . ':' . ($_stack["line"] ? $_stack["line"] : '') . ' - ' . ($_stack["function"] ? $_stack["function"]ihor
- 1 хв читання
Під час оновлення Magento 2, або перемикання гілок git у вашому середовищі розробки, іноді може з'являтися помилка:
The following modules are outdated: Vendor_Module schema: current version - x.x.x, required version - z.z.z
Щоб вирішити цю проблему, виконайте такі дії:
1. Спробуйте отримати найновіший код розширення. Виконайте команду CLI в кореневому каталозі Magento:
composer install
Якщо у вас виникли проблеми з виконанням цієї команди, просто пропустіть її та перейдіть до кроку 2.
2. Спробуйте оновити свою базу даних. Виконайте команду CLI:
php bin/magento setup:upgrade
3. Якщо кроки 1 та 2 не допомогли, перейдіть до своєї бази даних та виконайте цей SQL-запит (не забудьте змінити виділений жирним шрифтом текст):
UPDATE `table_prfix_setup_module` SET schema_version="z.z.z", data_version="z.z.z" WHERE module="Vendor_Module";
"table_prfix_" можна знайти в app/etc/env.php, зверніть увагу, що він може бути порожнім.
- 1 хв читання
Зазвичай ви отримуєте помилку bash permission denied під час запуску скрипта/файлу, який не має дозволів на виконання. Це одна з помилок . Все, що вам потрібно зробити, щоб виправити це, це змінити дозволи файлу та додати виконавчий.
Щоб виправити помилку bash permission denied (відмовлено в доступі до bash), виконайте такі кроки:
1. Відкрийте термінал (оболонку)
2. Перейдіть до папки зі скриптом
3. Виконайте команду CLI, щоб змінити налаштування дозволів файлу:
chmod +x path_to_file/file_name
Наприклад, якщо ви виконуєте :
bin/magento ...
і отримуєте помилку:
bash: bin/magento: Permission denied
Вам потрібно додати дозвіл на виконання ( x ) до файлу bin/magento.
Для цього виконайте команду CLI:
chmod +x bin/magento
У випадку Magento 2 ви також можете використовувати наступну команду, щоб уникнути проблеми (php перед bin/magento):
php bin/magento ...
Ще одна проблема, з якою ви можете зіткнутися під час виконання команд bin/magento , як-от наведені нижче, – це збій веб-сайту під часihor