Мы получаем заявки от клиентов с фатальной ошибкой после обновления 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
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, которое сейчас находится в отделе контроля качества, будет выпущено сегодня... очень скоро.
Что мы изменили?
Как это решает проблему?
League\Container
, трейты и т. д.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://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 и проблема решена!
Самый полезный комментарий
Я сделал это, скачал плагин и загрузил на свой веб-сервер. Это сработало для меня.