Версия PHP не определена правильно

10

Я запускаю Drush на хосте, на котором установлено несколько версий PHP. По умолчанию, php --versionдаст вам 5.2.x, но php53 и php54 также доступны. Так что в моем .bash_profile у меня есть alias php='php53'( php --version= 5.3.13), который заставляет Drush работать для некоторых команд.

Тем не менее, я все еще получаю сообщение «Ваша установка PHP командной строки слишком старая. Drush требует как минимум PHP 5.3.2» для некоторых очень полезных команд.

Пара действительно раздражающих примеров:

  • drush pm-updateсообщит, что он выполнил резервное копирование, а затем успешно обновит все модули и ядро, затем вернет ошибку версии PHP и восстановит все резервные копии. В подробном режиме команда, предшествующая ошибке: 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 немедленно вернет ошибку версии PHP

Другие команды, которые я пробовал до сих пор, работают нормально. Я не уверен, почему это так, если Drush иногда использует бинарный файл php53, а иногда нет, или ему просто не удается правильно определить версию, но некоторые важные функции для меня нарушены.

handsofaten
источник

Ответы:

21

Drush не использует только php напрямую в качестве команды, но ему нужен полный путь. В последней версии Drush вы можете добавить следующую строку в ваш, .bash_profileчтобы указать, какой PHP вы хотите использовать.

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

Вот только пример MAMP, но вы также можете изменить его по своему собственному пути.

Айван
источник
1
Чтобы уточнить приведенное выше объяснение: когда Drush перезванивает в себя, он запускает php и берет первый php в вашей переменной PATH. Псевдонимы bash не видны php exec, поэтому псевдоним php = 'php53' не виден. Вышеприведенное объяснение устраняет проблему, как и раньше export DRUSH_PHP=php53. Другим решением будет гарантировать, что php53 появится в вашем PATH перед любым другим PHP при запуске Drush.
greg_1_anderson
если вы используете oh_my_zsh, убедитесь, что .zshrc
Это исправило это для меня. Хотя я должен был сделать source .bash_profileдля немедленного эффекта
Алма
извините, но я не могу понять, где находится этот файл .bash_profile. Где я могу найти ти?
Шигхар
1
Если вы используете MAMP, конфигурации переменной DRUSH_PHP недостаточно. См. Docs.drush.org/en/7.x/configure
sea26.2
2

Вот еще одно решение:

  1. Создайте символическую ссылку на нужную версию php (в моем случае php5.4) ln -s / usr / local / bin / php54 ~ / bin / php

  2. нам нужно изменить приоритет ~ / bin в $ PATH так, чтобы он появился перед / usr / local / bin (где находится оригинальный интерпретатор php) find ~ / -name .bash_profile | xargs sed -i 's / \ $ PATH: \ $ HOME / bin / \ $ HOME / bin: \ $ PATH / g'

  3. перезагрузите источник .bash_profile ~ / .bash_profile

Источник: http://webiga.com/2013/06/22/change-default-version-of-php-at-webfaction/

Джастин Леви Винтер
источник
0

Я только столкнулся с этим после обновления Drush на Windows. На сервере запущена более старая версия PHP, и он не брал версию PHP, поставляемую с Drush.

Мне удалось это исправить, указав путь к php.exe в файле drush.bat, расположенном по адресу

c: \ документы и настройки \ все пользователи \ данные приложения \ drush \ drush.bat

Я просто добавил полный путь к PHP, изменив эту строку:

@ php.exe "% ~ dp0drush.php" --php = "php.exe"% * к этому:

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

Wayne
источник
0

Проблема для меня заключалась в том, что drush не работал с правильной версией PHP, я думаю, проблема заключалась в том, что он использовал PHP 7, и мне нужен PHP 5.6. Итак, я запустил в консоли:

где php

И результат был (см. Путь PHP для 5.6): введите описание изображения здесь

Затем я перешел к своему файлу ~ / .bashrc и добавил одну строку, которая задает путь PHP для drush (и сохранения):

export DRUSH_PHP = / usr / bin / php5.6

Затем я обновил .bashrc следующим (не пропустите точку в начале команды):

, ~ / .Bashrc

И это все! Надеюсь, это поможет!

Бето Авейга
источник
0

Предполагая, что вы установили drush с помощью composer и хотите запустить свою команду, используя php 7 (это работает и для облачных сред acquia)

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

Хуан Себастьян Контрерас Эйсев
источник