Mac 将 PHP 升级到 5.6,但是 CLI php -v 得到 5.3.28?

Posted

技术标签:

【中文标题】Mac 将 PHP 升级到 5.6,但是 CLI php -v 得到 5.3.28?【英文标题】:Mac upgraded PHP to 5.6, but CLI php -v get 5.3.28? 【发布时间】:2014-11-02 01:54:07 【问题描述】:

我已经在我的机器上安装了 MAMP(随 php 5.5 提供)。并且 localhost 指向 /Applications/MAMP/htdocs。当我尝试在终端中使用 composer 在 htdocs 中安装依赖项时,就会出现问题。 Composer 抱怨 PHP 必须是 5.4 或以上。

我猜它抱怨 PHP 是 OSX 自带的。所以我通过

将PHP升级到5.6
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6

但是当我这样做时

$ php -v

我还是得到了

PHP 5.3.28 (cli) (built: Aug 29 2014 18:52:17) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies

Composer 还在抱怨……

这是为什么呢?以及如何解决这个问题?

【问题讨论】:

php 5.3 在你的 $path 中可能早于 5.6。要么删除 5.3,要么将 5.6 移动到 5.3 之前路径中的某个位置 在终端中执行which php 以查看使用了哪个二进制文件。执行echo $PATH 以查看在您键入命令时搜索二进制目录的顺序。安装程序可能在 /Users/myusername/.profile 文件的 PATH 变量中附加了 php 安装目录。 谢谢 Marc 和 jkj,我能够在答案中找到如下解决方案。 不管怎样,如果你升级到 Mavericks,你将在 /usr/bin 中获得 5.4.24。 我正在使用 Mavericks,但不知何故安装了 Apache2,这导致了冲突。所以通过删除Apache2,它解决了这个问题。 【参考方案1】:

如果您已使用 curl 进行升级,请复制并粘贴以下代码行并按 Enter。

$ export PATH=/usr/local/php5/bin:$PATH

现在,输入

$ php -v

如果操作正确,它应该显示以下内容

PHP 5.6.23 (cli) (built: Jun 26 2016 13:17:47) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
    with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

【讨论】:

经过数小时的搜索,这对我有用,谢谢!【参考方案2】:

如果您使用Homebrew 安装了 PHP 5.6,则可以:

打开终端,运行open -a TextEdit ~/.bash_profile,然后将其粘贴到文件末尾:

# Use Home-brewed PHP 5.6 instead of pre-installed version (5.3)
export PATH="$(brew --prefix homebrew/php/php56)/bin:$PATH"

保存文件并重启终端。

【讨论】:

这切了芥末。谢谢! export PATH="$(brew --prefix php@5.6)/bin:$PATH"【参考方案3】:

感谢您的帮助。

这是由于$PATH中的顺序,就像上面cmets中发布的Marc和jkj。

我找不到重新排序 $PATH 的方法(进行了一些研究,但未能找到简单的方法),但我可以通过简单地删除之前在这篇文章之后安装的 Apahce2 来解决这个问题:

https://apple.stackexchange.com/questions/41143/how-to-revert-default-mac-apache-install-to-original

2014 年 9 月 9 日更新: 经过一番研究,以下过程将使PHP版本设置系统范围广泛。

程序来自这个source,请在该页面下方查找cmets并找到用户Amtriorix。

我只是在这里复制/粘贴他的解决方案:

  The php-cli version is still the Apple version if You do not change it. Your php on apache can be different as the cli version, including used modules ! So beware.
    As Brian Wynn did mention, of course You can modify Your PATH settings to write into your ~/.profile file the following
    export PATH=/usr/local/php5/bin:$PATH
    Most likely a better approach is to make the setting system wide.
    You should symlink to the right php executable.
    So:
    #cd /usr/bin
    #mv php php.org
    #ln -s /usr/local/php5/bin/php
    test if it works:
    #php -v && php -m && php --ini
    --> should be php-osx version with related modules...

【讨论】:

您可以在 ~/.bash_profile 文件中将 $PATH 设置为您想要的任何内容...您可以这样做:echo "PATH='$PATH'" >>~/.bash_profile,然后编辑该文件并将 PATH 更改为您想要的。下次您启动新终端时,这将是您的 PATH。 mv:将 php 重命名为 php.org:不允许操作【参考方案4】:
    查看终端历史记录以了解新版本的安装位置(可能是 /usr/local) 在终端中输入“which php”以查看当前版本的位置(这应该与新版本不同) 转到用户/用户名/.bash_profile 用新位置替换旧位置,或在原始位置之后添加另一个位置,用冒号分隔(如果替换,可能会破坏其他内容,具体取决于位置)。

    重启终端,运行 php -v 测试。

    export PATH="/usr/local/mysql/bin:/usr/local/bin:/usr/local:$PATH"
    

【讨论】:

以上是关于Mac 将 PHP 升级到 5.6,但是 CLI php -v 得到 5.3.28?的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何把php升级到5.6

将centos 7 自带的 php 5.4升级为 5.6

mac 升级10.12 php debug 环境 跑不起的解决 解决方案

用homebrew将php 7.1升级到7.2后,无法在Mac上重启Apache

PHP版本升级5.3.25到5.6

centos 6.9 cpanel php 5.6 升级到php7