如何在Mac OS X中升级PHP?

102

我觉得这是一个非常晦涩的问题,但奇怪的是,这个问题的文档很少。

我想升级PHP,但遇到了几个问题:

  • 没有内置的包管理器。 MacPorts 没有将php识别为已安装的软件包,因为它没有安装PHP本身。
  • 运行 locate php 指示可能有许多依赖关系。
  • 我不知道php是如何安装的,因为它是随操作系统一起提供的,所以我不知道是否应该从源代码安装或下载二进制文件。我也不知道在不破坏依赖关系的情况下卸载旧版本的正确方法。

我正在运行Leopard。我觉得苹果公司不希望你进行升级。购买Snow Leopard并进行升级会解决这个问题(以及未来类似的问题)吗?


http://aerendir.me/2015/08/01/how-to-upgrade-php-built-in-your-mac-osx/ - TheCrazyProfessor
13个回答

91

您可能想要查看Marc Liyanage的PHP软件包,它有一个漂亮的Mac OS X安装程序包,您可以双击进行安装。他会保持更新。

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

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


1
谢谢!!我很紧张,以为这个过程会更加困难。 - Gavin
10
注意,这个软件包不会覆盖Mac上原来的PHP版本,所以它不能直接使用,你需要将新目录添加到PATH中。使其可用的说明在那个页面上(我第一次很傻地错过了这一点)。 - Coded Monkey
1
哇!在花费数小时尝试通过Homebrew安装过程后,我尝试了这个方法。超级快速,超级简单,而且它实际上直接就能用!谢谢! - Magnus
绝对是最好的选择。非常轻松(只要你记得确保你的$PATH正确,正如@CodedMonkey所指出的那样)。 - Darragh Enright
2
另外值得一提的是,尽管安装在单独的目录中,安装程序会配置Apache,以便所有Web应用程序使用新安装的PHP版本。因此,如果您从命令行运行PHP,则PATH技巧很有用。如果您想运行Web应用程序,则安装程序会处理所有事情。 - fiacobelli
显示剩余2条评论

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,而是安装一个新的。尽管有些混淆,但我遇到了安装两个版本后出现严重问题的情况... - Julian F. Weinert
我尝试过这个,但遇到了很多问题,比如启动时bash崩溃,我不得不重新安装它。在尝试这些命令时要小心,并注意Brew在处理这些行时建议你应该做什么。 - Brac
请注意,homebrew/dupes和homebrew/versions现已弃用。 - medinasod

15

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

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二进制文件创建新链接

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版本的软件包名称? - David

6

选项 #1

此处所建议,这个网站提供了一个方便、最新的一行命令。

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

选项 #2

我更喜欢通过Homebrew 进行安装


1
你是指这个吗?理想情况下,你应该在这里总结一切,你知道的,以防链接失效和简化操作!还值得注意的是,它不会替换苹果自带的 PHP。;P - cregox

3
在我开始之前,我有最新版本(v5.0.15)的OS X Server (是的,很糟糕,我知道...然而,Web服务器似乎工作得很好)。我寻找了很多天想要更新PHP的新版本(或至少使Apache指向新版本)。我的mcrypt以及其他扩展都无法正常工作,我从http://php-osx.liip.ch/ 和其他教程中安装和重新安装了PHP无数次,直到我终于注意到在OS X Server保留的许多不同.conf文件中的一条评论中写有一些信息,即OS X Server在加载Apache httpd.conf之前会加载其自己的自定义.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
这个评论节省了我很多时间! - Bri Bri

2
升级到Snow Leopard并不能解决保持PHP更新的主要问题。苹果不会始终将其捆绑的第三方软件与OS更新同步更新。依赖苹果获取您所需的错误修复/安全更新可能会引发麻烦。
此外,我建议通过MacPorts进行安装(并进行必要的配置以使用它来代替Apple的PHP),而不是尝试直接升级Apple提供的PHP。对/usr/bin所做的任何更改都有可能被未来的苹果更新覆盖。

苹果的安全更新2010-002将Leopard的PHP更新为5.2.12。 - Dave Bacher
PHP 5.3.1 随 Snow Leopard 一同提供。 - JAL

2
在终端中使用以下命令检查您当前的php版本:
$ php -v

你可以在终端中查看当前的 PHP 版本,如果你想升级 PHP 版本,可以通过在终端中运行与版本相关的 PHP 连接命令来实现,如下所示:
$ brew install homebrew/php/php71

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

$ php -v

现在你可以在终端中看到当前的PHP版本....谢谢

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接