Trabalhando recentemente com o PHP Composer em um projeto que tem como base o framework Laravel, me deparei com o erro: Invalid version string.

Mais precisamente ao realizar a tentativa de instalar um pacote Laravel que me permite utilizar modelos com a estratégia lógica do Eloquent para acessar bancos de dados MongoDB.

O nome do pacote é Laravel MongoDB, criado por Jens Segers, podendo ser encontrado no repositório Github jenssegers/laravel-mongodb.

A mensagem completa de erro à seguir foi exibida em meu console:

[UnexpectedValueException]
Could not parse version constraint ^1.0.1: Invalid version string "^1.0.1"

O motivo real do erro não foi possível identificar, porém, a solução é simples, principalmente se sua instalação do PHP Composer está utilizando ainda a versão 1.x.

Solução pra o erro “Invalid version string” do PHP Composer

Eu resolvi o problema mantendo o PHP Composer atualizado, para tanto, execute a auto-atualização do Composer e tente novamente a instalação do pacote desejado:

composer selfupdate

A instalação do pacote deve ser executada após a atualização do composer finalizar, no meu caso utilizei o comando a seguir na linha de comando do terminal:

composer require jenssegers/mongodb

O comando acima resultou na seguinte saída de mensagens no console de meu terminal:

Using version ~2.1 for jenssegers/mongodb
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing jenssegers/mongodb (v2.1.3)
Downloading: 100%

jenssegers/mongodb suggests installing jenssegers/mongodb-session (Add MongoDB session support to Laravel-MongoDB)
jenssegers/mongodb suggests installing jenssegers/mongodb-sentry (Add Sentry support to Laravel-MongoDB)

E voilá, resolvido o problema de erro invalid string version, está relacionado à uma versão desatualizada do composer PHP instalado em seu computador ou servidor.

Note que o ideal é que você esteja executando a versão mais recente do Composer, a v2.x.

Porém, em alguns contextos as atualizações de versões de sistemas e ferramentas não permitem a atualização tão frequente sem antes passar por análises e homologações. É o caso de empresas com grande volume de sistemas executando em servidores internos nas suas infra-estruturas.

Espero que a dica ajude-o a resolver questões similares.