Resolver problemas

O Composer instala um pacote global mas não encontra o seu comando

Revisto a 2 min de leitura Composer terminal

Muitos pacotes do Composer incluem binários ou executáveis via CLI que nos permitem aceder a funcionalidades a partir da linha de comandos.

O instalador do Laravel, por exemplo, fornece o comando laravel. A criação de um projeto também pode exigir outros programas, conforme as opções escolhidas.

A primeira coisa a fazer é instalar o pacote a nível global na nossa conta com composer global require:

composer global require "laravel/installer"

Se, ao executar laravel, o terminal responder command not found, verifique antes que a instalação terminou corretamente e que o pacote contém o binário:

composer global show laravel/installer
composer global config bin-dir --absolute

O segundo comando devolve o diretório real dos binários. Verifique que aí existe laravel e execute command -v laravel para saber se a shell já o encontra.

Só se o binário existir e o seu diretório não estiver no PATH, adicione o caminho devolvido pelo Composer ao ficheiro de arranque da shell. Em Bash, por exemplo:

export PATH="$PATH:/ruta/devuelta/por/composer"

Execute source ~/.bashrc para aplicar a alteração se a sessão usar Bash. Noutra shell, modifique o ficheiro de arranque correspondente.

Não presuma que o caminho é sempre ~/.composer/vendor/bin: pode mudar consoante COMPOSER_HOME, XDG ou a opção bin-dir do Composer.

Se já encontra o comando mas falha

Execute primeiro laravel --version para confirmar que binário está a usar sem criar um projeto. Um erro de permissões, do interpretador PHP ou de requisitos é diferente de command not found e não se corrige adicionando outra vez o diretório ao PATH.

Um cron ou uma sessão não interativa pode não ler ~/.bashrc. Para essas tarefas use caminhos absolutos verificados e o PHP compatível. Adicionar o diretório ao final do PATH mantém a prioridade de um comando com o mesmo nome que já exista; utilize command -v para detetar esse caso antes de alterar a ordem. Não adicione diretórios em que outros utilizadores possam escrever.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.