Pular requisito de PHP do compositor

117

Estamos usando PHPCI e compositor. O servidor que executa PHPCI está no PHP 5.3.

Para um projeto, adicionamos o SDK PHP do Facebook, usando o composer. Requer PHP 5.4. O Composer é acionado por PHPCI e executado. Mas, como o servidor CI acabou de receber o PHP 5.3, o composer falhou com a mensagem de erro:

facebook/php-sdk-v4 4.0.9 requires php >=5.4.0 -> no matching package found.

Isso deixou minha construção em PHPCI falhar, é claro.

Existe a possibilidade de pular este requisito? Talvez adicionando uma opção ao composer.json? Ou um parâmetro para a chamada composer.phar?

Armin
fonte

Respostas:

284

Encontrei a opção:

composer install --ignore-platform-reqs

Ignore os requisitos de plataforma (pacotes php e ext).


Editar: você pode pular as verificações de plataforma com isso, mas o Composer irá buscar os pacotes com base na versão do PHP fornecida. Então, quando você precisar que o composer também emule uma versão do PHP durante a resolução de dependências, você pode (e deve!) Usar isso em seu composer.json:

{
    "config": {
       "platform": {
           "php": "5.6.6"
       }
    }
}

https://getcomposer.org/doc/06-config.md#platform

Armin
fonte
Como posso ignorar o repositório privado. Alguns pacotes requerem repo privado.
dungphanxuan
Impressionante. É útil quando php cli ainda não está refletindo uma mudança de versão.
giovannipds
No Composer 2, há um novo comando, que pode ser usado: php.watch/articles/composer-ignore-platform-req
Armin
3

Para muitos comandos, você pode dizer ao composer para ignorar a verificação de versão php, com o parâmetro " --ignore-platform-reqs":

composer COMMAND --ignore-platform-reqs

isso irá ignorar a especificação da versão do php.

Esteja ciente de que o software pode funcionar ou não: a especificação da versão php existe porque em algum lugar do código é necessária pelo menos a versão php especificada, portanto, se você usar esse código, o software será danificado.

Luca C.
fonte
--ignore-platform-reqsnão é para todos os comandos disponíveis, como sua resposta indica.
Armin
-11

Se alguma coisa exigir uma versão específica do PHP, não será executado em uma versão anterior do PHP. Você ainda receberá erros apropriadamente ao contornar os requisitos do PHP.

Btw, PHP 5.3 não é mais mantido, eu recomendo fortemente atualizar o servidor PHPCI.

Wouter J
fonte
3
Primeiramente, gostaria de saber como contornar os requisitos do PHP.
Armin
Você não pode e não vai porque o código não funcionará em uma versão anterior do php
Wouter J
3
Será. Apenas o servidor CI obteve a versão baixa do PHP. O servidor que contém o SDK do Facebook é executado em PHP 5.4. É apenas sobre o servidor ci, que empacota tudo em um bom arquivo zip implantável.
Armin
Embora o PHP 5.3 não seja mais mantido pelos principais desenvolvedores de PHP, alguns tipos de Linux ainda o suportam e o farão por um tempo ainda. Ubuntu 12.04 LTS vem com 5.3 e é compatível até abril de 2017 ( wiki.ubuntu.com/LTS ). Mudar para 14.04 é o melhor caminho de atualização, mas existem mudanças significativas que requerem uma quantidade de trabalho para serem corrigidas (Apache 2.4, php-fpm etc). Conseqüentemente, grande parte da Internet ainda usa 5.3.x.
Andrew McCombe
verdade, infelizmente, 99% dos pacotes, mesmo os bem suportados, não têm os requisitos adequados. É mais um indicador do que o desenvolvedor está usando do que qualquer outra coisa.
mschuett de