Это список распространенных ошибок при использовании Composer и как их избежать. Общее #
Пакет не найден #
Пакет не найден на travis-ci.org #
Пакет, не найденный в Jenkins-build #
У меня есть зависимость, которая содержит определение «репозитории» в своем composer.json, но, похоже, это игнорируется. #Свойство конфигурации Я заблокировал зависимость от конкретной фиксации, но получил неожиданные результаты. #Хотя Composer поддерживает блокировку зависимостей для конкретного коммита с использованием синтаксиса Примечание. Хотя иногда это удобно, не следует использовать пакеты в долгосрочной перспективе, потому что это связано с техническим ограничением. Метаданные composer.json будут по-прежнему считываться из имени ветви, указанной вами до хеша. Из-за этого в некоторых случаях это не будет практическим решением, и вы всегда должны попытаться переключиться на отмеченные выпуски, как только сможете. Для этого ограничения просто не обойтись. Поэтому настоятельно рекомендуется не использовать его. Необходимо переопределить версию пакета #Допустим, ваш проект зависит от пакета A, который, в свою очередь, зависит от конкретной версии пакета B (скажем, 0,1). Но вам нужна другая версия упомянутого пакета B (скажем, 0.11). Вы можете исправить это путем псевдонимов версии 0.11 до 0.1: Composer.json: { "require": { "A": "0.2", "B": "0.11 as 0.1" } } См. Псевдонимы для получения дополнительной информации. Ошибки ограничения памяти #Иногда композитор может сбой в некоторых командах с этим сообщением: PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted <...>
В этом случае PHP Примечание. Композитор внутренне увеличивает memory_limit до 1.5G. Чтобы получить текущее значение php -r "echo ini_get('memory_limit').PHP_EOL;" Попробуйте увеличить лимит в вашем файле ; Use -1 for unlimited or define an explicit value like 2G memory_limit = -1 Или вы можете увеличить лимит с помощью аргумента командной строки: php -d memory_limit=-1 composer.phar <...> Эта проблема также может возникнуть в экземплярах cPanel, когда активирована защита корпуса от ракеты-носителя. Для получения дополнительной информации см. Документацию о функции fork bomb на сайте cPanel. Влияние Xdebug на Composer #Для повышения производительности при включенном расширении xdebug Composer автоматически перезапускает PHP без него. Вы можете переопределить это поведение, используя переменную среды: Composer всегда будет показывать предупреждение, если используется xdebug, но вы можете переопределить его с помощью переменной окружения: "Система не может найти указанный путь" ("The system cannot find the path specified") (Windows) #
Ограничение скорости API и токены OAuth #Из-за ограничений скорости GitHub в их API может случиться, что Composer предложит вам аутентификацию с запросом вашего имени пользователя и пароля, чтобы он мог продолжить работу. Если вы не хотите предоставлять свои учетные данные GitHub для Composer, вы можете вручную создать токен, используя следующую процедуру:
Теперь Composer должен установить / обновить без запроса аутентификации. proc_open (): fork failed errors #Если компилятор показывает, что функция proc_open () fork вышла из строя по некоторым командам: PHP Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar
Это может происходить из-за нехватки памяти в VPS и отсутствия свободного пространства подкачки. free -m total used free shared buffers cached Mem: 2048 357 1690 0 0 237 -/+ buffers/cache: 119 1928 Swap: 0 0 0 Чтобы включить обмен, вы можете использовать, например: /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 /sbin/mkswap /var/swap.1 /sbin/swapon /var/swap.1 Вы можете создать постоянный файл подкачки после этого руководства. Деградированный режим #Из-за некоторых неустойчивых проблем в Travis и других системах мы ввели деградированный сетевой режим, который помогает Composer успешно завершиться, но отключает несколько оптимизаций. Это автоматически включается при обнаружении проблемы. Если вы видите эту проблему спорадически, вам, вероятно, не нужно беспокоиться (медленная или перегруженная сеть также может вызывать те тайм-ауты), но если она появляется неоднократно, вы можете посмотреть на варианты ниже, чтобы определить и решить проблему. Если вы были указаны на этой странице, вы хотите проверить несколько вещей:
Тайм-аут операции (проблемы IPv6) #Вы можете столкнуться с ошибками, если IPv6 настроен неправильно. Общая ошибка: The "https://getcomposer.org/version" file could not be downloaded: failed to
open stream: Operation timed out
Мы рекомендуем исправить настройку вашего IPv6. Если это невозможно, вы можете попробовать следующие обходные пути: Обходной путь Linux: На linux кажется, что запуск этой команды помогает сделать ipv4-трафик более высоким, чем у ipv6, что является лучшей альтернативой, чем полное отключение ipv6: sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf" Обходные Windows: На окнах единственный способ - полностью отключить ipv6, боюсь (в окнах или в вашем домашнем маршрутизаторе). Обходной путь Mac OS X: Получить имя своего сетевого устройства: networksetup -listallnetworkservices
Отключить IPv6 на этом устройстве (в данном случае «Wi-Fi»): networksetup -setv6off Wi-Fi
Запустить композитор ... Вы можете снова включить IPv6: networksetup -setv6automatic Wi-Fi
Тем не менее, если это устраняет вашу проблему, обратитесь к своему провайдеру Интернета, чтобы попытаться устранить ошибки маршрутизации. Это лучший способ добиться успеха для всех. Композитор зависает с SSH ControlMaster #Когда вы пытаетесь установить пакеты из репозитория Git и используете параметр Причиной этого является ошибка SSH: https://bugzilla.mindrot.org/show_bug.cgi?id=1988. В качестве обходного пути откройте SSH-соединение с вашим узлом Git перед запуском Composer: ssh -t git@mygitserver.tld
composer update
См. Также https://github.com/composer/composer/issues/4180 для получения дополнительной информации. Zip-архивы не распакованы правильно. #Composer может распаковать zipballs, используя либо системную утилиту |