Добрый вечер.
Д9 + Композер. Копия сайта обновлена на тестовом хосте, хостер вообще другой для теста. На тесте все работает, никаких проблем. На бою сайт лежит. Копия полная. Сравнил .htaccess -- никакой разницы в исходнике (до обновлений) и в текущей версии. Соответственно все подключения в settings изменены. Ошибка вообще 500, это не ругань на что-то типа трастед_хостс. Ошибка ниже. Буду очень признателен, если кто направит. Я просто не понимаю: кучу раз переносил на другие хосты, никаких ошибок такого рода не встречал. Читаю пока сам по Гуглу, но время важно. Кстати, параллельно делались обновления на бою (потом откатывали, упал тоже). На тест закинул именно на всякий случай, обновил -- гуд, потом на бою -- упал. Все обновления сделаны на тесте, решено просто перенести версию на бой, но она и упала тоже.
PHP Fatal error: Declaration of Symfony\\Component\\DependencyInjection\\ServiceLocator::has(string $id) must be compatible with Psr\\Container\\ContainerInterface::has($id) in /home/i/irservice/u/vendor/symfony/dependency-injection/ServiceLocator.php on line 46
Комментарии
а версии php одинаковые?
Так все взято с исходника, все после обновлений работает на тесте. На тесте 7.4, в composer.json указано
"php": ">=7.3",
. Из этого понимаю, что ПХП не мешает тут. Работает же на тесте)))php версии (в том числе и cli) должны быть одинаковыми в тестовой и боевой среде
Поясните. Взято с боя, на тесте гуд -- обносилось и версии не хватает? Повышать просто на бою надо?
версии должны быть одинаковые.
И если вы качали пакеты композером(cli) для одной версии, а запускаете на другой - то это непорядок.
Дык, если повышу версию на бою, должно заработать? Не понимаю, вероятно.
Что не понятно во фразе "одинаковые версии php"?
Не понимаю формулировку. Если дело именно в версиях, ее можно (вероятно) поднять. Вот и спрашиваю.
Смысл разделения дева и прода в том, что они должны быть идентичны по всем параметрам. Особенно важны одинаковые версии веб-сервера, php, субд.
Если на деве всё работает, а на проде нет, логично, что на деве окружение лучше настроено и на проде нужно настроить аналогично
Таймвеб.
Суппорт пишет версия в консоли -- ерунда. Для сайтов стоит "выше". Есть опыт с ним? Прошу прощения, но есть желание победить, а не тупо "сами разбирайтесь с хостом".
И все-таки. В доп.
На проде тоже давали обновление, ничего вообще не менялось где-либо, просто апдейт посредством Композера. И упал же сайт. Тест тут, как понимаю вообще не играет роли. Окружение ведь одно. Да, использовалась версия при обновлении принудительно, но сам хостер дал инструкцию. А по поводу версии там 7.4 включена. Нихрена не понимаю...
php --version:
PHP 7.1.33 (cli) (built: Apr 16 2014 07:06:24) ( NTS )
Момент с версией был, но обновлялось на бою, что потом откатывали, именно с указанием версии. Все равно упал.
Как обновлял?
Композер. Там сайт изначально, как понимаю, был без него. Но сейчас... да собственно он же у меня на хосте работает, блин.
https://stackoverflow.com/questions/67172779/error-while-installing-symf...
?
Можно пояснить?
Да я не вникал, просто нагуглилось за пять секунд что у людей такие же проблемы. Вдруг поможет. Нет сейчас времени глубоко погружаться, извините.
Проверь наличие этого пакета на тесте и проде.
Окружения, кстати, идентичные?
Вполне нет.
Итого.
На хостере (Таймвеб) поддержка -- ерунда, только деньги берут. Если кто имеет опровержение, велкам.
Перенесено на другой хост -- все работает и обновляется даже (без тестов прям, продом был текущий НС).
Резюме.
Вообще не вижу смысла такие танцы выделывать: хостеров полно, кто обещает и действительно поддерживает Д9. Сменили два хостера, два дня ушло. ЗАЧЕМ?
А поподробней, пожалуйста.
Что на что обновляли?
В какой момент падает?
У меня ровно вчера - один в один после 9.1.10 --> 9.2.0 композером и последующего update.php (drush updb на проде не работает, но это отдельная история). Конфигурации дев/прод идентичны, насколько возможно. Девятку обновлял уже много раз, в том числе и 9.0 --> 9.1. Никогда такого не было!
И да, это Таймвеб!
При чем тут таймвеб? Вы обновляетесь на проде без предварительного тестирования на локалке/деве/стейдже?
Конечно же с предварительным тестированием, это само собой разумеется. Возможно, я не совсем внятно написал "один в один". На локалке все прекрасно. Причем тут таймвеб, не знаю, но совпадение выглядит слегка странным. Почему и спрашиваю, что конкретно делал топикстартер.
А, ну это меняет дело. А в логах что? То же самое, что и у топикстартера?
Один в один :), гугл соврать не даст!
Да переехали просто на другой хостинг. Их полно сейчас достойных. И с нормальным суппортом.
Весь список обновлений уже не помню, но по ядру: обновлялось с чего-то на предыдущую (от текущей соответственно). Конечно все тестировалось, бэкапилось, но... На новом хостинге поднялся за пять минут (буквально).
Ну, 1 июня вы могли обновляться только на 9.1.9. Вы же с девятки обновлялись? То есть, получается, 9.1.х на 9.1.9? У меня это обновление без проблем прошло, специально посмотрел по коммитам, 29 мая дело было. Внутри таймвеба с тех пор никуда не переезжал. Потом еще 9.1.10 было, тоже без проблем. И на тебе. Хостера менять не готов, пока не будет однозначно указано на то, что эффект связан только с ним.
Получается, так. А хостера менять я и не предлагаю. Мне нужно было вернуть в работу сайт, который был на тесте обновлен, на локали обновлен и доделан по задачам. Человеку нужно было не терять времени и он согласился переехать на хостера, у которого мои тесты размещены и его сайт на них работает без проблем.
Ну, пока я не вижу проблемы с тем, чтобы "вернуть в работу сайт" за 5 минут даже в этом случае через "гит резет хард". Хотя, конечно, это довольно досадно. В любом случае, сделать эту операцию и потом спокойно разбираться в причинах сбоя, выглядит немного предпочтительнее, чем каждый раз метаться в поисках нового хостера.
У меня последний вопрос на сегодня: вы просто core используете, или core-recommended?
Мне интересно, когда у вас обновился (и обновился ли) psr/container до 1.1.1. Это может объяснить, почему у нас с вами не совпадает ни время появления косяка, ни версия D9 на которой это проявляется.
Рекомендед используется там.
Спасибо, тогда ответственность psr/container, по-видимому, следует исключить, поскольку в вашем случае он не должен был обновляться. Поищу в другом месте.
Проблема локализована, расходимся.
В принципе, для решения не нужно было бы не только менять провайдера, но и даже тревожить техподдержку. Но мне этот вариант не очень подходит, об этом ниже.
Итак.
1. Еще раз провел контрольный экперимент на нулевую гипотезу "кривых рук". То есть, воспроизвел обновление постадийно, не спеша, с обязательной очисткой всех кэшей на продакшене перед composer install и после. Ошибка 500 воспроизвелась с вышеуказанным "must be compatible..." и т.д.
2. Далее, после отката обратно локалки и прода через git reset и composer install, перевел сайт на Таймвебе с PHP 7.4 на PHP 8, в котором расширение psr отсутствует, и прогнал апдейт еще раз.
Все: страница update.php загружается, предлагаются все необходимые 8 апдейтов БД. Дальше проверять не стал, чтобы не откатывать еще и БД продакшена.
Вердикт, вынесенный выше верен: мешает устаревшее расширение psr версии 1.0.0 в РНР 7.4 на хостинге, конфликтуя с пакетами друпала. Техподдержку, к сожалению, пинать придется, поскольку лично мне PHP 8.0 пока преждевременен.
PS. Почему у топикстартера этот косяк случился раньше, до выхода D9.2.0, учитывая, что у него core-recommended, мне неведомо, возможно, что эти обновленные пакеты psr тянулись зависимостями какого-то модуля или же core-dev.
Я впечатлен вашими стараниями. Но уйду туда, куда вам явно не хочется)
Зачем пинать тех, кому пофиг? Ну, сдохла лошадь, там нечего ее пинать. Хостеров полно. Если тут не работает, а поддержка так себе (как мин), есть другие хостеры, которые все либо держат в норме, либо готовы помогать. У меня времени и желания разбирать чужие косяки никакого нет. ЗАЧЕМ? Можно не отвечать, вопрос в воздух)))
Да ну какие это старания. Делов на 10 минут. Или 5. Была бы возможность сейчас включить PHP 8.0 вообще не стоило бы обсуждения.
А, кстати, дев был, да. Проверил сейчас)
Финально отчитываюсь. Попросил техподдержку Таймвеб либо перенести на другой сервер с PHP 7.4, но без установленного psr, либо решить иным способом. Решили обновлением psr/container, установленном в PHP 7.4 хостинга до версии 1.1.1 (psr/cache не трогали). Все заработало, все обновляется.
Топикстартеру пожелание успехов в решении любых проблем путем смены хостинга. И еще: никогда не тяните dev-пакеты на продакшен. Для этого есть ключ композера --no-dev.
Ну, уж тогда и я зафиналю.
Смена хостера -- отличная мера, которая основана на конкуренции. Частью ее является хороший суппорт. У меня нет ни времени, ни желания потратить несколько дней на решение проблемы с хостингом, как у вас. Копать можно что-то существенное, но эту ерунду. Вам тоже удачи в поиске всех решений всегда.
+1
Повтор))) Не буду уж хостера называть))) Но другой.
Вот у меня вопрос: если есть те, кто, как минимум, решают проблему быстро (или, вдруг, даже не допускают ее; psr необходимость обсуждать смысла не вижу, если кто против, велкам), нафига тратить уже два часа на решение? Серьезно. Если у вас вода ржавая в кране, а есть другой поставщик, у кого чистая, вы будете разбираться с инфраструктурой первого? Может и сложный пример, но решения явное. И это не вода, а куча поставщиков. У многих сантехники гораздо лучше.
И я, почти уверен, решение "не найдется" к утру. А то и вообще "не найдется". Так что разбирайтесь, если есть время и желание. Но, на мой взгляд, это работа на чужой доход: им пофиг на инфраструктуру, на тикеты, на репутацию уж даже. А вы копаете ради "найти". Если подтвердится решение (даже если хостер "не сможет решить"))), напишу о нем. Но. Конкуренция спасет все то, где она есть.