La versione di PHP non viene rilevata correttamente


10

Sto eseguendo Drush su un host su cui sono installate più versioni di PHP. Di default, php --versionti darebbe 5.2.x, ma sono disponibili anche php53 e php54. Quindi nel mio .bash_profile ho alias php='php53'( php --version= 5.3.13), che fa funzionare Drush per alcuni comandi.

Tuttavia, ricevo ancora "La tua installazione di PHP a riga di comando è troppo vecchia. Drush richiede almeno PHP 5.3.2" per alcuni comandi molto utili.

Un paio di casi davvero fastidiosi:

  • drush pm-updatesegnalerà che ha eseguito il backup e quindi ha aggiornato con successo tutti i moduli e il core, quindi restituisce l'errore della versione di PHP e ripristina tutti i backup. In modalità dettagliata, il comando che precede l'errore è: 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 restituirà immediatamente l'errore della versione di PHP

Gli altri comandi che ho provato finora funzionano bene. Non sono sicuro del motivo per cui questo sarebbe, se Drush a volte utilizza il binario php53, altre volte no, o se ha solo problemi a rilevare correttamente la versione, ma alcune funzionalità molto importanti sono rotte per me.

Risposte:


21

Drush non usa solo php direttamente come comando, ma ha bisogno del percorso completo. Con l'ultima versione di Drush, puoi aggiungere la seguente riga nella tua .bash_profileper impostare quale PHP vuoi usare.

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

Ecco solo un esempio di MAMP, ma puoi cambiarlo anche con il tuo percorso.


1
Per affinare la spiegazione sopra: quando Drush richiama in se stesso, esegue "php" e prende il primo php nel tuo PERCORSO. Gli alias Bash non sono visibili a php exec, quindi alias php = 'php53' non è visibile. La spiegazione sopra risolve il problema, come farebbe export DRUSH_PHP=php53. Un'altra soluzione sarebbe quella di assicurare che php53 appaia nel PERCORSO prima di qualsiasi altro PHP durante l'esecuzione di Drush.
greg_1_anderson,

se stai usando oh_my_zsh assicurati .zshrc

Questo mi ha risolto. Anche se ho dovuto fare source .bash_profileper effetto immediato
Alma

scusa ma non riesco a capire dove sia questo file .bash_profile. Dove posso trovare ti?
Shyghar,

1
Se si utilizza MAMP, la configurazione della variabile DRUSH_PHP non è sufficiente. Vedi docs.drush.org/en/7.x/configure
sea26.2

2

Ecco un'altra soluzione:

  1. Crea un collegamento simbolico alla versione desiderata di php (php5.4 nel mio caso) ln -s / usr / local / bin / php54 ~ / bin / php

  2. dobbiamo cambiare la precedenza di ~ / bin in $ PATH in modo che appaia prima di / usr / local / bin (dove si trova l'interprete php originale) trovare ~ / -name .bash_profile | xargs sed -i 's / \ $ PATH: \ $ HOME / bin / \ $ HOME / bin: \ $ PATH / g'

  3. ricaricare il sorgente .bash_profile ~ / .bash_profile

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


0

Mi sono appena imbattuto in questo dopo aver aggiornato Drush su Windows. Il server ha una versione precedente di PHP in esecuzione e non stava rilevando la versione di PHP fornita con Drush.

Sono stato in grado di risolverlo specificando il percorso di php.exe nel file drush.bat, che si trova in

c: \ documenti e impostazioni \ tutti gli utenti \ dati applicazioni \ drush \ drush.bat

Ho appena aggiunto il percorso completo a PHP cambiando questa riga:

@ php.exe "% ~ dp0drush.php" --php = "php.exe"% * a questo:

@ "c: \ programmi \ drush \ php \ php.exe" "% ~ dp0drush.php" --php = "php.exe"% *


0

Il problema per me era che drush non funzionava con la versione corretta di PHP, penso che il problema fosse che stava usando PHP 7 e avevo bisogno di PHP 5.6. Quindi ho corso nella console:

dove php

E il risultato è stato (vedere il percorso PHP per 5.6): inserisci qui la descrizione dell'immagine

Quindi sono andato al mio file ~ / .bashrc e ho aggiunto una riga che imposta il percorso PHP per drush (e salva):

export DRUSH_PHP = / usr / bin / php5.6

Quindi ho aggiornato .bashrc con il seguente (non perdere il punto all'inizio del comando):

. ~ / .Bashrc

E questo è tutto! Spero che aiuti!


0

Supponendo che tu abbia installato drush con il compositore e desideri eseguire il tuo comando usando php 7 (funziona anche per gli ambienti cloud di acquia)

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.