如何在Mac OS X中升级PHP?


99

我觉得这是一个非常棘手的问题,但是奇怪的是,这个问题的文献记录很少。

我想升级PHP,但是有几个问题:

  • 没有内置的程序包管理器。MacPorts无法将php识别为已安装的软件包,因为它本身并未安装PHP。
  • 运行locate php表明可能存在许多依赖性。
  • 我不知道如何安装php,因为它已包含在操作系统中,所以我不知道应该从源代码安装还是从二进制文件下载。我也不知道在不破坏依赖关系的情况下卸载先前版本的正确方法。

我正在豹子上奔跑。我有一种感觉,苹果不希望您升级。购买Snow Leopard并进行升级是否可以解决此问题(以及将来的类似问题)?


Answers:


90

您可能想查看Marc Liyanage的PHP软件包。它带有一个不错的Mac OS X安装程序包,您可以双击它。他使它保持最新状态。

http://php-osx.liip.ch/

另外,尽管升级到Snow Leopard将来不会帮助您进行PHP更新,但它可能会为您提供更新的PHP版本。我正在运行OS X 10.6.2,它具有PHP 5.3.0。


谢谢!!我很紧张,这个过程将变得更加困难。
加文2014年

10
请注意,此软件包不会覆盖 Mac上的原始PHP版本,因此无法立即使用,您需要将新目录添加到中PATH。使它工作的说明在该页面上(我很愚蠢,以至于第一次错过它)。
编码猴子

1
哇!花了几个小时尝试通过Homebrew进行安装过程后,我尝试了一下。超级快,超级容易,而且实际上开箱即用!谢谢!
Magnus W

绝对是最佳选择。如此轻松(只要您记得确保$PATH@CodedMonkey所指出的正确性)
Darragh Enright

2
另外,值得一提的是,尽管安装在单独的目录中,但安装程序会配置Apache,以便您的所有Web应用程序都使用新安装的php版本。因此,仅当您从命令行运行php时,PATH技巧才有用。如果您要运行Web应用程序,则安装程序会处理所有事情。
fiacobelli

51

我用这个:https : //github.com/Homebrew/homebrew-php

该命令是:

$ xcode-select --install

$ brew tap homebrew/dupes
$ brew tap homebrew/versions
$ brew tap homebrew/homebrew-php

$ brew options php56
$ brew install php56

然后在您的.bash_profile.bashrc

# Homebrew PHP CLI
export PATH="$(brew --prefix homebrew/php/php56)/bin:$PATH"

请注意,这不会更新嵌入式PHP,但会安装一个新的PHP。尽管感到困惑,我还是遇到了安装两个版本的严重麻烦……
朱利安·F·韦纳特

我尝试了此操作,并且遇到了很多问题,例如bash在启动时崩溃,我不得不重新安装它。尝试使用这些命令时要小心,并注意Brew建议您在处理这些行时应执行的操作。
Brac

请注意,现在不建议使用自酿/重复和自酿/版本。
medinasod

14

我认为一种简单的方法是:

1-检查您当前的PHP在哪里:

$ which php
$ /usr/local/bin/php

你看?通常,我们运行的命令是/ usr / local / bin中的链接,因此...

2-取消当前的PHP链接

unlink /usr/local/bin/php

如果愿意,在取消链接之前,请检查路径,然后删除php文件(执行ls -al /usr/local/bin| grep php,然后rm -rf进入所需的路径)

3-安装PHP 7.1

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1

4-创建新链接(使用已安装的php 7.1 bin)

ln /usr/local/php5-7.1.9-20170914-100859/bin/php /usr/local/bin/php

就像我说的,这是我思考的一种简单方法。


8

没有内置的程序包管理器。MacPorts无法将php识别为已安装的软件包,因为它本身并未安装PHP。

您仍然可以使用MacPorts安装它。sudo port install php52(或所需的任何版本)将安装PHP。

它不会覆盖Apple提供的版本。它将安装在下/opt/local。您可以添加/opt/local到的开头$PATH,并在Apache配置中使用MacPorts版本。


您如何找出php版本的套件名称?
大卫

6

选项1

作为推荐这里这个网站提供了方便,最新的一个班轮。

这不会覆盖系统上PHP的基本版本,而是将其干净地安装在/ usr / local / php5中。

选项#2

我的首选方法是通过Homebrew进行安装


1
你是这个意思吗 理想情况下,您应该对此处的所有内容进行汇总,以防万一链路中断时的冗余以及简化操作!同样值得注意的是,它也不会取代苹果php。; P
cregox 2015年

3

在继续之前,我拥有OS X Server 的最新版本(v5.0.15)(是的,太可怕了,我知道...但是,Web服务器似乎可以正常运行)。我反复搜索了几天,试图更新(或至少让Apache指向)新版本的PHP。我mcrypt没有工作,没有其他扩展名,我从http://php-osx.liip.ch/ 和其他教程中无数次安装和重新安装了PHP 直到我最终注意到其中一个注释中写了一点点信息。.confOS X Server保留了许多不同的文件,这是OS X Server .conf在加载Apache httpd.conf (位于/etc/apache2/httpd.conf之前先加载自己的自定义文件。服务器文件位于:

/Library/Server/Web/Config/apache2/httpd_server_app.conf

当您打开此文件时,必须像这样注释掉此行:

#LoadModule php5_module libexec/apache2/libphp5.so

然后添加正确的路径(如果已通过http://php-osx.liip.ch/链接进行了安装,则应已安装)

LoadModule php5_module /usr/local/php5/libphp5.so

进行此修改之后,我的PHP最终加载了正确的PHP安装。话虽这么说,但如果情况变得不妙,那可能是因为OS X在OS X安装时就可以在PHP的本机安装中运行。要还原,只需撤消上面的更改。

无论如何,希望这对在此上花费无数时间的其他人有所帮助。


1
此评论节省了我很多时间!
GuyGizmo

2

升级到Snow Leopard并不能解决您的使PHP保持最新状态的主要问题。Apple并不总是将其捆绑的第三方软件与操作系统更新保持最新。依靠Apple为您提供所需的错误修复/安全更新会带来麻烦。

另外,我建议通过MacPorts安装(并进行必要的配置以使用它而不是 Apple的PHP),而不是尝试就地升级Apple提供的PHP。您所做的任何事情都有/usr/bin可能被将来的某些Apple更新所覆盖。


苹果的安全更新2010-002将Leopard的PHP更新为5.2.12。
Dave Bacher 2010年

PHP 5.3.1附带了Snow Leopard。
日,日本

2

节省了按键操作,这可在MacOS Sierra上使用:

$ brew install homebrew/php/php71

$ /usr/local/opt/php71/bin/php -v
PHP 7.1.4 (cli) (built: Apr 14 2017 15:02:16) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

2

使用以下命令在终端中检查您当前的php版本,

$ php -v

您会在终端中看到当前的php版本,如果您想使用php concat升级您的php版本,并将其命名为,则在终端中运行下一个命令,

$ brew install homebrew/php/php71

如果您完成了php版本升级的安装,请重新启动终端并运行命令。

$ php -v

现在,您将在终端中看到当前的php版本。


0

使用此命令:

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.0

0

您可以使用curl更新php版本。

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.3

最后一步:

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

检查升级版本

php -v


-2

将php7升级到最新的稳定版本 brew upgrade php7 或将php5.X升级到最新的稳定版本

brew upgrade php56

用于brew list检查安装的版本

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.