У меня есть 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.
Если вы хотите игнорировать специфику вашей локальной системы, вы можете использовать --ignore-platform-reqs
флаг. Имейте в виду, однако, что это может привести к непригодному для использования файлу блокировки.
Покажем это по воображаемому сценарию:
Представь, что у тебя нет ext-crypt
локально и ни в производстве. Есть пакет cryptX
что в версии 1 использует lib-crypt-polyfill
(что делает то, что ext-crypt
использует код PHP), но в версии 2 они изменили зависимость на «ext-crypt».
Теперь, если вы установите его как обычно, вы получите версию 1 (единственную, которая соответствует зависимостям). Но с --ignore-platform-reqs
он просто работает так, как будто все, что он хочет, доступно в вашей системе. Таким образом, он с радостью устанавливает версию 2, которая не работает на вашей машине, но более того, она не будет работать и на вашем производственном сервере.
Так же легко, как
php composer.phar update google/apiclient
или вы можете указать несколько отдельных пакетов как
php composer.phar update google/apiclient zircote/swagger-php rollbar/rollbar
Возможно, расширение PHP mcrypt не установлено на вашем компьютере. Посмотрите, как установить его здесь http://php.net/manual/en/mcrypt.setup.php
На машине с Ubuntu запустите:
apt-get установить php5-mcrypt
php5enmod mcrypt
перезапуск службы apache2