A versão do PHP não foi detectada corretamente

10

Estou executando o Drush em um host com várias versões do PHP instaladas. Por padrão, php --versionvocê daria o 5.2.x, mas o php53 e o php54 também estão disponíveis. Portanto, no meu .bash_profile eu tenho alias php='php53'( php --version= 5.3.13), o que faz o Drush funcionar para alguns comandos.

No entanto, ainda recebo "Sua instalação do PHP da linha de comando é muito antiga. Drush requer pelo menos mensagens do PHP 5.3.2" para alguns comandos muito úteis.

Alguns casos realmente irritantes:

  • drush pm-updaterelatará que fez backup e, em seguida, atualizou todos os módulos e núcleo com êxito, retornará o erro de versão do PHP e restaurará todos os backups. No modo detalhado, o comando que vem antes do erro é: php /home/[username]/drush/drush.php --backend=2 --verbose --root=/home/[username]/webapps/drup --uri=http://[domain name] pm-updatecode-postupdate 2>&1
  • drush archive-dump retornará imediatamente o erro de versão do PHP

Os outros comandos que tentei até agora funcionam bem. Não sei por que isso seria, se o Drush às vezes usa o binário do php53 e outras não, ou se apenas tem problemas para detectar a versão corretamente, mas alguns recursos muito importantes estão quebrados para mim.

handsofaten
fonte

Respostas:

21

Drush não usa apenas php diretamente como um comando, mas precisa do caminho completo. Com a última versão do Drush, você pode adicionar a seguinte linha no seu .bash_profilepara definir qual PHP você deseja usar.

export DRUSH_PHP=/Applications/MAMP/bin/php/php5.3.14/bin/php

Aqui está apenas um exemplo do MAMP, mas você pode alterá-lo também com seu próprio caminho.

yvan
fonte
11
Para refinar a explicação acima: quando o Drush chama de volta para si mesmo, ele executa 'php' e pega o primeiro php no seu PATH. Os aliases do bash não são visíveis para o php exec, portanto, o alias php = 'php53' não é visto. A explicação acima corrige o problema, como faria export DRUSH_PHP=php53. Outra solução seria garantir que o php53 apareça no seu PATH antes de qualquer outro PHP ao executar o Drush.
greg_1_anderson 27/09/12
se você estiver usando oh_my_zsh ter certeza .zshrc
Isso consertou para mim. Embora eu tinha que fazer source .bash_profilepara efeito imediato
Alma
desculpe, mas não consigo entender onde está esse arquivo .bash_profile. Onde posso encontrar ti?
Shyghar
11
Se você estiver usando o MAMP, a configuração da variável DRUSH_PHP não será suficiente. Veja docs.drush.org/en/7.x/configure
sea26.2
2

Aqui está outra solução:

  1. Crie um link simbólico para a versão desejada do php (php5.4 no meu caso) ln -s / usr / local / bin / php54 ~ / bin / php

  2. precisamos mudar a precedência de ~ / bin em $ PATH para que apareça antes de / usr / local / bin (onde está o intérprete php original) encontre ~ / -name .bash_profile | xargs sed -i / \ $ PATH: \ $ HOME / bin / \ $ HOME / bin: \ $ PATH / g '

  3. recarregar fonte .bash_profile ~ / .bash_profile

proveniente de: http://webiga.com/2013/06/22/change-default-version-of-php-at-webfaction/

Justin Levi Winter
fonte
0

Acabei de encontrar isso depois de atualizar o Drush no Windows. O servidor tem uma versão mais antiga do PHP em execução e não estava pegando a versão do PHP que acompanha o Drush.

Consegui corrigi-lo especificando o caminho para php.exe no arquivo drush.bat, localizado em

c: \ documentos e configurações \ todos os usuários \ dados do aplicativo \ drush \ drush.bat

Acabei de adicionar o caminho completo para o PHP alterando esta linha:

@ php.exe "% ~ dp0drush.php" --php = "php.exe"% * para isto:

@ "c: \ arquivos de programas \ drush \ php \ php.exe" "% ~ dp0drush.php" --php = "php.exe"% *

Wayne
fonte
0

O problema para mim foi que o drush não estava funcionando com a versão correta do PHP, acho que o problema era que ele estava usando o PHP 7 e precisava do PHP 5.6. Então eu corri no console:

whereis php

E o resultado foi (veja o caminho do PHP para 5.6): insira a descrição da imagem aqui

Depois fui ao meu arquivo ~ / .bashrc e adicionei uma linha que define o caminho do PHP para drush (e salve):

exportar DRUSH_PHP = / usr / bin / php5.6

Atualizei .bashrc com o seguinte (não perca o ponto no início do comando):

. ~ / .bashrc

E é isso! Espero que ajude!

Beto Aveiga
fonte
0

Supondo que você instalou o drush com o compositor e deseja executar seu comando usando o php 7 (isso também funciona para envios de nuvem da acquia)

/usr/local/php7.1/bin/php ../vendor/drush/drush/drush.php --php = / usr / local / php7.1 / bin / php [your_drush_command_here]

Juan Sebastian Contreras Aceve
fonte