PHPバージョンが正しく検出されない


10

複数のバージョンのPHPがインストールされているホストでDrushを実行しています。デフォルトで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バイナリを使用している場合と使用していない場合、またはバージョンを正しく検出できない場合、なぜそうなるのかわかりませんが、いくつかの非常に重要な機能が壊れています。

回答:


21

Drushはphpだけをコマンドとして直接使用するのではなく、完全パスを必要とします。Drushの最新バージョンでは、次の行をに追加して、.bash_profile使用するPHPを設定できます。

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

以下はMAMPの例にすぎませんが、独自のパスで変更することもできます。


1
上記の説明を改良するには、Drushがそれ自体にコールバックすると、「php」を実行し、PATHの最初のphpを取得します。Bashエイリアスはphp execからは見えないため、エイリアスphp = 'php53'は表示されません。上記の説明で問題が修正されexport DRUSH_PHP=php53ます。別の解決策は、Drushの実行時に、php53が他のPHPよりも前にPATHに表示されるようにすることです。
greg_1_anderson 2012

oh_my_zshを使用している場合は、必ず.zshrc

これで修正されました。私はsource .bash_profile即時の影響のためにやらなければならなかったけれども
アルマ

申し訳ありませんが、このファイル.bash_profileがどこにあるのか理解できません。tiはどこにありますか?
Shyghar 2017

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. $ PATH内の〜/ binの優先順位を変更して、/ usr / local / bin(元のphpインタープリターが置かれている場所)の前に現れるようにする必要があります~~ -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

WindowsでDrushをアップグレードした後、これに遭遇しました。サーバーでは古いバージョンのPHPが実行されており、Drushに付属しているバージョンのPHPを取得していませんでした。

次の場所にあるdrush.batファイルでphp.exeへのパスを指定することで修正できました

c:\ documents and settings \ all users \ application data \ drush \ drush.bat

次の行を変更して、PHPへの完全なパスを追加しました。

@ php.exe "%〜dp0drush.php" --php = "php.exe"%*これに:

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


0

私にとっての問題は、drushが正しいPHPバージョンで動作していないことでした。問題は、それがPHP 7を使用していて、PHP 5.6が必要だったということでした。だから私はコンソールで走った:

whereis php

そしてその結果は(5.6のPHPパスを参照): ここに画像の説明を入力してください

次に、〜/ .bashrcファイルに移動して、drush(および保存)のPHPパスを設定する1行を追加しました。

DRUSH_PHP = / usr / bin / php5.6をエクスポートします

次に、.bashrcを次のように更新しました(コマンドの先頭のポイントをお見逃しなく):

。〜/ .bashrc

以上です!お役に立てば幸いです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.