Versi PHP tidak terdeteksi dengan benar


10

Saya menjalankan Drush pada host yang memiliki beberapa versi PHP diinstal. Secara default, php --versionakan memberi Anda 5.2.x, tetapi php53 dan php54 juga tersedia. Jadi di .bash_profile saya, saya punya alias php='php53'( php --version= 5.3.13), yang membuat Drush berfungsi untuk beberapa perintah.

Namun, saya masih mendapatkan "Instalasi PHP baris perintah Anda terlalu tua. Drush memerlukan setidaknya PHP 5.3.2" pesan untuk beberapa perintah yang sangat berguna.

Beberapa contoh yang sangat menyebalkan:

  • drush pm-updateakan melaporkan bahwa ia telah membuat cadangan dan kemudian berhasil memperbarui semua modul dan inti, lalu mengembalikan kesalahan versi PHP dan memulihkan semua cadangan. Dalam mode verbose, perintah yang datang sebelum kesalahan adalah: 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 akan segera mengembalikan kesalahan versi PHP

Perintah lain yang saya coba sejauh ini berfungsi dengan baik. Saya tidak yakin mengapa ini terjadi, jika Drush kadang-kadang menggunakan biner php53, dan kadang-kadang tidak, atau jika hanya mengalami kesulitan mendeteksi versi dengan benar, tetapi beberapa fitur yang sangat penting rusak bagi saya.

Jawaban:


21

Drush tidak hanya menggunakan php secara langsung sebagai perintah, tetapi membutuhkan path lengkap. Dengan Drush versi terakhir, Anda dapat menambahkan baris berikut di Anda .bash_profileuntuk mengatur PHP mana yang ingin Anda gunakan.

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

Ini hanyalah contoh dari MAMP, tetapi Anda dapat mengubahnya juga dengan jalur Anda sendiri.


1
Untuk memperbaiki penjelasan di atas: ketika Drush memanggil kembali ke dirinya sendiri, ia menjalankan 'php', dan mengambil php pertama di PATH Anda. Alias ​​Bash tidak terlihat oleh php exec, jadi alias php = 'php53' tidak terlihat. Penjelasan di atas memperbaiki masalah, seperti yang akan terjadi export DRUSH_PHP=php53. Solusi lain adalah memastikan bahwa php53 muncul di PATH Anda sebelum PHP lain saat menjalankan Drush.
greg_1_anderson

jika Anda menggunakan oh_my_zsh pastikan .zshrc

Ini memperbaikinya untuk saya. Meskipun saya harus melakukan source .bash_profileuntuk efek langsung
Alma

maaf tapi saya tidak mengerti di mana file .bash_profile ini berada. Di mana saya dapat menemukannya?
Shyghar

1
Jika Anda menggunakan MAMP, konfigurasi variabel DRUSH_PHP tidak cukup. Lihat docs.drush.org/en/7.x/configure
sea26.2

2

Inilah solusi lain:

  1. Buat tautan simbolis ke versi php yang diinginkan (php5.4 dalam kasus saya) ln -s / usr / local / bin / php54 ~ / bin / php

  2. kita perlu mengubah prioritas ~ / bin dalam $ PATH sehingga muncul sebelum / usr / local / bin (di mana penerjemah php asli duduk) menemukan ~ / -name .bash_profile | xargs sed -i / \ $ PATH: \ $ HOME / bin / \ $ HOME / bin: \ $ PATH / g '

  3. memuat kembali .bash_profile source ~ / .bash_profile

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


0

Saya baru saja mengalami ini setelah memutakhirkan Drush pada Windows. Server memiliki versi PHP yang lebih lama berjalan dan tidak mengambil versi PHP yang menyertai Drush.

Saya dapat memperbaikinya dengan menentukan path ke php.exe di file drush.bat, yang terletak di

c: \ dokumen dan pengaturan \ semua pengguna \ data aplikasi \ drush \ drush.bat

Saya baru saja menambahkan path lengkap ke PHP dengan mengubah baris ini:

@ php.exe "% ~ dp0drush.php" --php = "php.exe"% * untuk ini:

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


0

Masalahnya bagi saya adalah bahwa drush tidak bekerja dengan versi PHP yang benar, saya pikir masalahnya adalah menggunakan PHP 7, dan saya membutuhkan PHP 5.6. Jadi saya berlari di konsol:

dimana php

Dan hasilnya adalah (lihat jalur PHP untuk 5.6): masukkan deskripsi gambar di sini

Kemudian saya pergi ke file ~ / .bashrc saya dan menambahkan satu baris yang menetapkan path PHP untuk drush (dan menyimpan):

ekspor DRUSH_PHP = / usr / bin / php5.6

Kemudian saya memperbarui .bashrc dengan yang berikut (jangan lewatkan titik di awal perintah):

. ~ / .bashrc

Dan itu dia! Semoga itu bisa membantu!


0

Dengan asumsi Anda menginstal drush dengan komposer dan Anda ingin menjalankan perintah Anda menggunakan php 7 (ini juga berfungsi untuk acquia cloud envs)

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.