Wp-rocket: [WIP] Возможный конфликт с Woocommerce 4.4.0

Созданный на 18 авг. 2020  ·  35Комментарии  ·  Источник: wp-media/wp-rocket

Мы получаем заявки от клиентов с фатальной ошибкой после обновления Woocommerce до 4.4.0.
Все еще исследую это. По словам Реми, похоже, что они используют тот же контейнерный пакет, что и мы, но не ту же версию, они используют новый пакет, который требует PHP 7 и содержит критические изменения.

Ошибки примерно такие:
Fatal error: Declaration of League\Container\ImmutableContainerAwareTrait::getContainer() must be compatible with League\Container\Argument\ArgumentResolverTrait::getContainer(): Psr\Container\ContainerInterface in /home/446954.cloudwaysapps.com/krxgzndejz/public_html/wp-content/plugins/wp-rocket/vendor/league/container/src/Inflector/Inflector.php on line 32

3rd party compatibility 🔥critical

Самый полезный комментарий

Я сделал это, скачал плагин и загрузил на свой веб-сервер. Это сработало для меня.

Все 35 Комментарий

WooCommerce 4.4 начал использовать тот же контейнерный пакет, что и мы: https://github.com/woocommerce/woocommerce/blob/b3097dbae6533efd569be95c20076a68bc146714/composer.json#L14 .

Но они используют версию 3, которая совместима только с PHP 7, в то время как мы все еще используем версию 2 (пока).

Композитор такой, какой он есть, во время выполнения загружается только одна версия пакета, и поскольку версии 2 и 3 контейнера несовместимы, это мешает нашему коду работать должным образом.

Та же проблема с 7 клиентами. Любой обходной путь, кроме остановки плагина?

Ага есть и на всех моих сайтах, просто отключи до нового релиза

Об этом идет пиар. Надеюсь, его скоро объединят.

Такой же. Затронуто более 20 клиентских сайтов. Не круто.

PR теперь в QA. Убедившись, что мы ничего не сломаем и не регрессируем. Как только мы подтвердим, что все в порядке, мы опубликуем.

Привет @MrGKanev @101sam @joshlcomstock ,

Ранее сегодня WooCommerce выпустила версию 4.4, которая включала изменение контейнера (League Container) на версию только для PHP 7 . Ракета также использует Контейнер Лиги; однако мы используем версию, совместимую с PHP 5.6.

Неустранимая ошибка возникает, когда любой из плагинов сначала загружает контейнер. Как? Каждый ожидает определенную версию, но Composer загружает в память только одну версию.

Исправление 3.6.4, которое сейчас находится в отделе контроля качества, будет выпущено сегодня... очень скоро.

Что мы изменили?

  1. Нужная нам версия Container теперь упакована внутри Rocket's Engine (не загружается через Composer).
  2. Пространства имён для него переименованы.

Как это решает проблему?

  1. WooCommerce использует классы League\Container , трейты и т. д.
  2. Rocket теперь использует WP_Rocket\Engine\Container — копию файлов контейнера League… переименовали.

Для PHP эти файлы классов, трейтов и т.д. теперь другие. Больше никаких фатальных ошибок из-за этой проблемы.

@iCaspar @hellofromtonya

Ну, я больше не могу понизить версию wordpress/woocommerce. Ракета Wp теперь отключена во время этой фатальной ошибки, но могу ли я обновить и повторно активировать ее? Потому что он не активирован прямо сейчас, и, если я хорошо помню, wp ракета может быть обновлена ​​только тогда, когда она включена.

[email protected] также не получает никаких писем, система доставки почты - пользователь превысил квоту...

Я только что прошел и деактивировал плагин WooCommerce 4.4.0, и WP-Rocket можно повторно активировать без проблем. Надеюсь, WC скоро выпустит исправление.

[email protected] также не получает никаких писем, система доставки почты - пользователь превысил квоту...

Извините за это @ChrisSmoke1. Мы очистили почтовый сервер, и электронные письма снова поступают. Можете ли вы повторно отправить нам, пожалуйста? Заранее приносим извинения за неудобства.

Ну, я больше не могу понизить версию wordpress/woocommerce. Ракета Wp теперь отключена во время этой фатальной ошибки, но могу ли я обновить и повторно активировать ее? Потому что он не активирован прямо сейчас, и, если я хорошо помню, wp ракета может быть обновлена ​​только тогда, когда она включена.

@ChrisSmoke1 Да, Rocket нужно активировать, чтобы обновлять его через админку. Однако его повторная активация сейчас приведет к фатальной ошибке, поскольку WooCommerce находится в версии 4.4. на Вашем сайте.

Что ты можешь сделать? Обратитесь в нашу службу поддержки, чтобы узнать, как загрузить Rocket 3.6.4. Вот и вам ссылка .

Я сделал это, скачал плагин и загрузил на свой веб-сервер. Это сработало для меня.

@sknight80 Это прекрасно!

@MrGKanev @101sam @joshlcomstock

Мы выпустили версию 3.6.4 с исправлением фатальной ошибки из-за конфликтов с версией WooCommerce 4.4. Вот документ, который поможет вам обновить Rocket .

Спасибо за терпеливость.

Да, я видел это в тот момент, когда он поднялся. Спасибо! :)

Как описано в https://github.com/woocommerce/woocommerce/issues/27384 , зависимости пространства имен/области действия должны предотвращать такие случаи в будущем:

Не уверен, что используются зависимости в пространстве имен, но это предотвратит такие проблемы в долгосрочной перспективе:

https://github.com/humbug/php-scoper
https://github.com/coenjacobs/моцарт
https://github.com/TypistTech/импостер-плагин

Таким образом, автозагрузчик композитора не будет использовать неправильный класс/зависимость с другим интерфейсом.

Спасибо @DanielRuf за то, что поделились и повторили здесь проблему WC. Ценить это. И да, ты прав. Существуют способы инкапсулировать определенные внешние зависимости. После этой проблемы мы говорим об этом шаге.

Я хочу поблагодарить WP-Rocket за отправку всем клиентам электронного письма «Важная информация для пользователей WooCommerce». Резервное копирование было сделано, и я просто хотел выбрать вариант обновления для wordpress Pfff ;-)
Рекомендация? Просто ждать следующего обновления/исправления Woo?

Загрузка по FTP и повторная активация WP Rocket 3.6.4 сработали :-)

@PeterTemps Эта ошибка обычно возникает из-за того, что что-то пошло не так в процессе обновления или из-за отсутствия или старых файлов композитора. Я бы предложил использовать FTP/SSH для переноса всех файлов Rocket 3.6.4 на ваш сервер. Ознакомьтесь с разделом FTP этого документа .

Рекомендация? Просто ждать следующего обновления/исправления Woo?

@Mic2005 Во-первых, добро пожаловать. Что мы рекомендуем? Обновите WP Rocket 3.6.4 _перед_ обновлением WooCommerce.

@PeterTemps Эта ошибка обычно возникает из-за того, что что-то пошло не так в процессе обновления или из-за отсутствия или старых файлов композитора. Я бы предложил использовать FTP/SSH для переноса всех файлов Rocket 3.6.4 на ваш сервер. Ознакомьтесь с разделом FTP этого документа .

Я попытаюсь. Спасибо!

Я была такая же проблема. Я установил сейчас новейшую ракету wp, она активировалась, но сайт работает в 10 раз медленнее, чем без нее... есть предложения?

У нас похожая проблема, но мы работаем с сервером NGINX. Что мы увидели, что новая версия удаляет все наши настройки (в WordPress), и нам нужно перенастроить все параметры (мы все еще пытаемся выяснить, где, если это реальная проблема или просто конфигурация)

@aniatanasova Хм, я не знаю, почему и что. Но мы хотели бы углубиться в это вместе с вами. Не могли бы вы открыть тикет в службу поддержки? Мы свяжемся с вами, чтобы предоставить вам безопасный способ поделиться с нами учетными данными.

У нас похожая проблема, но мы работаем с сервером NGINX. Что мы увидели, что новая версия удаляет все наши настройки (в WordPress), и нам нужно перенастроить все параметры (мы все еще пытаемся выяснить, где, если это реальная проблема или просто конфигурация)

После нескольких раундов мы выяснили, что единственный способ вернуться к той же скорости — настроить параметры вручную, а не импортировать/экспортировать — почему я не уверен, но это работает на двух разных сайтах с использованием NGINX.

Всем спасибо за быстрое решение

@101sam Хм, интересно. Обновление «не должно было» удалять настройки. Тем не менее, вы испытали что-то, что сделало именно это. Хм, я не уверен, почему. Но я хочу знать.

Если вы хотите, не стесняйтесь открыть билет поддержки. Мы можем копаться вместе с вами.

@aniatanasova Хм, я не знаю, почему и что. Но мы хотели бы углубиться в это вместе с вами. Не могли бы вы открыть тикет в службу поддержки? Мы свяжемся с вами, чтобы предоставить вам безопасный способ поделиться с нами учетными данными.

Я открыл новую проблему, а также написал по электронной почте в службу поддержки.

@101sam Хм, интересно. Обновление «не должно было» удалять настройки. Тем не менее, вы испытали что-то, что сделало именно это. Хм, я не уверен, почему. Но я хочу знать.

Если вы хотите, не стесняйтесь открыть билет поддержки. Мы можем копаться вместе с вами.

Это происходит на двух разных серверах, поэтому я уверен, что мы сможем воспроизвести это. Но мне нужно время, чтобы клиент спустился. Проблема, с которой мы столкнулись, как только произошел сбой, заключалась в том, что мы не могли вернуться в WordPress. Командная строка WP не работает, нам пришлось удалить папку wp-rocket. Возможно, это был не самый оптимальный способ, но только так нам удается восстановить сайт после краха. Мы не хотели входить в MySQL, так как WooCommerce имеет обновление базы данных во время обновления. На этом этапе играть с wp_options было рискованно.

@ 101sam , какой инструмент или инструменты вы использовали для измерения скорости?

Мы замечаем изменения скорости от монитора, который у нас есть на сайте, используя:

https://gtmetrix.com

Мы проверяем это с помощью:

https://developers.google.com/speed/pagespeed/insights/

Для отладки и проверки его исходящего от мы-ракеты
Мы добавляем следующие строки и используем Query Monitor, чтобы убедиться, что это не другие плагины или обновления WooCommerce.

ini_set('display_errors','On');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', true);
define( 'WP_DEBUG_LOG', '/tmp/log/wp-errors.log' );
define( 'SCRIPT_DEBUG', true );

@ 101sam Вы обнаружили, что это настройки в WP Rocket? Или что-то другое?

Не могу сказать, похоже на комбинацию ситуаций:
Попытка обновить WooCommerece + происходит сбой, и обновление базы данных WooCommerece было в пути.

Или один из наших crontab пытался пнуть посреди обновлений или во время обновления.

Или это Wordfence блокировал изменения кода.

вам нужно перейти на 4.4.1, для этого есть исправление: https://woocommerce.wordpress.com/2020/08/19/woocommerce-4-4-1-fix-release/
обновите последнюю версию WC и проблема решена!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

vmanthos picture vmanthos  ·  5Комментарии

piotrbak picture piotrbak  ·  4Комментарии

jbma picture jbma  ·  5Комментарии

Screenfeed picture Screenfeed  ·  5Комментарии

NataliaDrause picture NataliaDrause  ·  4Комментарии