Установите один пакет без проверки всех требований с помощью composer

У меня есть composer.json, как это:

{
"require": {
"symfony/yaml" : "dev-master",
"symfony/console" : "dev-master",
"ebuildy/ebuildy" : "dev-master",
"keboola/php-encryption": "dev-master",
"pear-pear.php.net/mail_mime" : "*",
"pear-pear.php.net/http_request2" : "*",
"pear-pear.php.net/mail_mimedecode" : "*",
"microsoft/windowsazure": "*",
"rollbar/rollbar": "dev-master",
"facebook/php-sdk-v4" : "4.0.*",
"happyr/linkedin-api-client": "dev-master",
"zircote/swagger-php" : "dev-master",
"google/apiclient" : "dev-master"},
"autoload": {
"psr-0": {
"bizlunch": "src/"}
},
"minimum-stability": "dev"}

Только что добавил «google / apiclient», я хочу установить этот новый пакет без проверки требований других пакетов (потому что на моем компьютере разработчика «keboola / php-encryption» жалуется на отсутствие crypt ext и другие вещи).

Какова правильная команда? Пробовал уже обновить PACKAGE, но это не удается:

$root: php composer.phar update google/apiclient
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
- keboola/php-encryption dev-master requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.

0

Решение

Если вы хотите игнорировать специфику вашей локальной системы, вы можете использовать --ignore-platform-reqs флаг. Имейте в виду, однако, что это может привести к непригодному для использования файлу блокировки.

Покажем это по воображаемому сценарию:

Представь, что у тебя нет ext-crypt локально и ни в производстве. Есть пакет cryptX что в версии 1 использует lib-crypt-polyfill (что делает то, что ext-crypt использует код PHP), но в версии 2 они изменили зависимость на «ext-crypt».

Теперь, если вы установите его как обычно, вы получите версию 1 (единственную, которая соответствует зависимостям). Но с --ignore-platform-reqs он просто работает так, как будто все, что он хочет, доступно в вашей системе. Таким образом, он с радостью устанавливает версию 2, которая не работает на вашей машине, но более того, она не будет работать и на вашем производственном сервере.

1

Другие решения

Так же легко, как

php composer.phar update google/apiclient

или вы можете указать несколько отдельных пакетов как

php composer.phar update google/apiclient zircote/swagger-php rollbar/rollbar
0

Возможно, расширение PHP mcrypt не установлено на вашем компьютере. Посмотрите, как установить его здесь http://php.net/manual/en/mcrypt.setup.php

На машине с Ubuntu запустите:

apt-get установить php5-mcrypt

php5enmod mcrypt

перезапуск службы apache2

0
По вопросам рекламы [email protected]