Композитор не устанавливает пакет, несмотря на то, что зависимости удовлетворены

Я пытаюсь создать небольшой прокси для определенной цели. Я выбрал следующий проект: https://github.com/jenssegers/php-proxy

Я получаю следующую ошибку при попытке установить его с помощью композитора:

~# > php composer require jenssegers/proxy
Using version ^2.2 for jenssegers/proxy
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: don't install jenssegers/proxy v2.2.1
    - Conclusion: remove symfony/http-foundation v4.0.8
    - Installation request for jenssegers/proxy ^2.2 -> satisfiable by jenssegers/proxy[v2.2.0, v2.2.1].
    - Conclusion: don't install symfony/http-foundation v4.0.8
    - jenssegers/proxy v2.2.0 requires symfony/http-foundation ~2.6 -> satisfiable by symfony/http-foundation[v2.6.0, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.4, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9].
    - Can only install one of: symfony/http-foundation[v2.6.0, v4.0.8].
    [...]
    - Can only install one of: symfony/http-foundation[v2.8.9, v4.0.8].
    - Installation request for symfony/http-foundation (locked at v4.0.8) -> satisfiable by symfony/http-foundation[v4.0.8].


Installation failed, reverting ./composer.json to its original content.

Моя проблема в том, что у меня http-foundation v4.0.8:

~# > php composer show symfony/http-foundation
name     : symfony/http-foundation
descrip. : Symfony HttpFoundation Component
keywords :
versions : * v4.0.8
type     : library
license  : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
source   : [git] https://github.com/symfony/http-foundation.git d0864a82e5891ab61d31eecbaa48bed5a09b8e6c
dist     : [zip] https://api.github.com/repos/symfony/http-foundation/zipball/d0864a82e5891ab61d31eecbaa48bed5a09b8e6c d0864a82e5891ab61d31eecbaa48bed5a09b8e6c
names    : symfony/http-foundation

autoload
psr-4
Symfony\Component\HttpFoundation\ => .
exclude-from-classmap

requires
php ^7.1.3
symfony/polyfill-mbstring ~1.1

requires (dev)
symfony/expression-language ~3.4|~4.0

Есть ли причина, по которой Composer не устанавливает мой пакет?

Спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
1 486
2

Ответы 2

В такой ошибке я всегда ищу слово requires. В твоем случае:

jenssegers/proxy v2.2.0 requires symfony/http-foundation ~2.6

Это означает, что вам сначала понадобится symfony/http-foundation ~2.6, чтобы соответствовать этому условию.

Также locked at v4.0.8 означает, что composer.lock заблокировал это значение.

Как это решить?

  • удалить composer.lock
  • composer remove symfony/http-foundation
  • composer require jenssegers/proxy
  • если это не удается, посмотрите, какие другие пакеты конфликтуют, по ключевому слову requires

Углубляясь

Когда я смотрю на пакет на Github (https://github.com/jenssegers/php-proxy), я вижу, что он не выпускался более двух лет. Последний выпуск был v3.0.0-beta2 в октябре 2017 г..

Лично я бы предпочел форк этого пакета, выпустить собственную версию с поддержкой Symfony 4 или связаться с сопровождающим для получения стабильной версии 3.0 это независимая от Symfony.

Хорошо, так что следующее: - Можно установить только один из: symfony / http-foundation [v2.6.0, v4.0.8]. это сравнение, а не "список" (может работать на 2.6, у меня 4.0.8). Думаю, найду другую посылку. У меня есть 3 недели, чтобы поместить это в продукт для нашего клиента. Спасибо

JeanneD4RK 14.04.2018 22:34

Удачи в работе! Не могли бы вы отметить этот ответ как принятый, если бы он вам помог? Итак, мы знаем, что это было решено

Tomas Votruba 15.04.2018 00:25

НЕ РЕШЕНИЕ, А ВРЕМЕННОЕ РЕШЕНИЕ

Я создал свой собственный класс в src / Utils / Proxy.php, используя это: http://php.net/manual/en/book.curl.php#90821

Работает, как ожидалось (мне еще нужно переписать все ссылки на веб-страницы, чтобы они сами проксировались)

Спасибо за ответ Томаш Вотруба

Другие вопросы по теме