O problema

Assim como as versões de outros pacotes que eles requerem, os pacotes do Composer podem especificar as versões do PHP que eles suportam.

Ao resolver as versões dos pacotes a serem instalados, o Composer precisa encontrar versões que correspondam a todas as restrições existentes:

  • As restrições de versão que você especificou para dependências em seucomposer.json
  • As restrições de versão que cada pacote especificou para suas dependências
  • As versões do PHP que cada pacote suporta

Se não houver nenhum pacote que satisfaça todas essas restrições, você receberá um erro.

Confusões Comuns

Observe que a restrição de versão para PHP segue as mesmas regras de outras restrições de compositor . Portanto, uma restrição de ^7.0significa "qualquer versão de 7.x acima de 7.0" e não inclui 8.0.

A solução

Para resolver o problema, você precisa relaxar uma dessas restrições:

  1. Observe o pacote mencionado na mensagem de erro ( acme/some-packageno exemplo) e localize-o no Packagist (ou em qualquer fonte de pacote personalizado que você configurou).
  2. Veja se existe uma versão mais recente que suporte sua versão do PHP.
  3. Caso contrário, você precisará descobrir o que é necessário para adicionar esse suporte. Isso pode significar verificar o projeto diretamente, executar seus testes e enviar um patch para marcá-lo como compatível com a nova versão.
  4. Se (quando) o suporte for adicionado, você precisará garantir que seu composer.jsone outros pacotes dos quais você depende não excluam essa nova versão. Por exemplo, se você atualmente depende da acme/some-packageversão ^1.0, mas o PHP 8.0 só é suportado a partir da versão 2.2.0 em diante, você precisará alterar sua restrição para ^2.2, e certificar-se de que seu aplicativo ainda seja compatível.

Solução temporária

Às vezes, você tem certeza de que seu aplicativo funcionará bem com as mesmas versões de pacotes que você usava anteriormente. Nesse caso, você pode usar platformvariável de configuração em seu composer.jsonpara fingir que ainda está usando a versão antiga. Isso deve ser feito apenas como uma solução temporária ou para teste , pois significa que os pacotes que serão instalados podem estar completamente corrompidos em sua nova versão do PHP.

Por exemplo:

{
    "config": {
        "platform": {
             "php": "7.4.999"
        }
    }
}

Veja também " Substituir a dependência base do PHP no compositor "

0 Comments

Say something

Login OR Register to write comments