未正确检测到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二进制文件,而其他时候却没有,或者如果只是无法正确检测版本,那么某些非常重要的功能对我来说就坏了。

Answers:


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在您的PATH中先于其他PHP出现。
greg_1_anderson 2012年

如果您使用的是oh_my_zsh,请确保

这为我解决了。尽管我必须source .bash_profile立即采取行动
阿尔玛(Alma)

抱歉,但我不知道此文件.bash_profile在哪里。我在哪里可以找到ti?
Shyghar

1
如果您使用的是MAMP,则仅配置DRUSH_PHP变量是不够的。见docs.drush.org/en/7.x/configure
sea26.2 '18

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 \所有用户\应用程序数据\ 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。因此,我在控制台中运行:

PHP在哪里

结果是(参见5.6的PHP路径): 在此处输入图片说明

然后我转到〜/ .bashrc文件,并添加了一行设置drush(并保存)的PHP路径:

导出DRUSH_PHP = / usr / bin / php5.6

然后,我使用以下内容更新了.bashrc(不要错过命令开头的要点):

。〜/ .bashrc

就是这样!希望有帮助!


0

假设您使用composer安装了drush,并且想使用php 7运行命令(这也适用于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]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.