O «php -v» em SSH mostra outra versão que não a do site: como correr o PHP que escolheu

O comando php que escreve no Terminal ou em SSH não é obrigado a ser a versão que escolheu para o site. O site usa o que definiu em Select PHP Version para aquela pasta; a linha de comandos usa o primeiro php que encontra no caminho do sistema. Por isso o site pode estar no 8.2 e o php -v dizer outra coisa. A solução é chamar o PHP pelo caminho completo, ou criar um atalho.

Descobrir qual é qual

1 Abra o Terminal do cPanel ou uma sessão SSH. Nem todas as contas têm shell; depende da conta. O Terminal do cPanel.
2 Veja o PHP por omissão:php -v
which php
O primeiro mostra a versão, o segundo de onde vem.
3 Veja as versões instaladas:ls -d /opt/alt/php*Cada pasta é uma versão: php82 é o PHP 8.2, php74 o 7.4. Se a pasta não aparecer, essa versão não está disponível para si.
4 Chame a versão que quer pelo caminho completo:/opt/alt/php82/usr/bin/php -vTroque 82 pela versão do seu site, sem ponto.
5 Use esse caminho no que correr:/opt/alt/php82/usr/bin/php artisan migrate
/opt/alt/php82/usr/bin/php ~/composer.phar install
Assim o comando e o site falam a mesma língua.

Um atalho para não escrever o caminho sempre

Se trabalha muito na linha de comandos, acrescente uma linha ao ficheiro ~/.bashrc da conta:

alias php='/opt/alt/php82/usr/bin/php'Feche e volte a abrir a sessão, e o php -v passa a mostrar a versão escolhida. O atalho só vale para quem escreve no Terminal: não vale no cron, onde se escreve sempre o caminho completo (correr um script PHP num cron).

Coisas úteis da linha de comandos

Comando Para quê
php -m Lista as extensões carregadas nessa versão. Confirma se a que ligou em Select PHP Version está mesmo lá.
php --ini Mostra que ficheiros de configuração o PHP leu. Útil quando um valor não se aplica.
php -l ficheiro.php Verifica a sintaxe de um ficheiro sem o executar.
php -d memory_limit=512M script.php Corre um script com um valor mudado só nessa execução. Os limites da conta continuam a valer.
php -r 'echo PHP_VERSION;' Escreve a versão que está a correr, para ter a certeza do que o script usa.
A configuração da linha de comandos pode não ser a do site. Um valor posto só no .user.ini da pasta do site vale para os pedidos web e pode não valer aqui. Se o script falha na linha de comandos e não no navegador (ou ao contrário), confirme o valor com php -i nessa mesma versão. Veja ver e ajustar a configuração do PHP.
Um erro de versão no Composer ou no artisan quase sempre é isto. Quando uma ferramenta se queixa de que o PHP é antigo e o site já está numa versão nova, o comando correu com o PHP errado. Repita-o com o caminho completo.

A versão da linha de comandos continua a não bater certo? Diga-nos a conta, a pasta e o que o php -v mostra.

Abrir um pedido de suporte

VEJA TAMBÉM

Ver e ajustar a configuração do PHP

Correr um script PHP num cron

O Composer em hospedagem partilhada

O Terminal do cPanel

PRODUTO RECOMENDADO

Servidor VPS com acesso root

Recursos só seus, o sistema que escolher, reinstalação quando quiser. desde 7.560,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?