在 macOS 上安装 php
老实说,你听起来比问题中明显的了解更多。所以你可能知道很多,但根据我的经验,我希望尽可能完整,因为这些回复留给其他可能在未来找到它们并发现有用信息的人。如果我遗漏了什么,我希望有人为我指出,以便我可以在此过程中学到更多。
从前,雷神统治世界:
php 自 Mac OS X 版本 10.0.0 起已成为 Mac 的捆绑标准,您可以阅读有关 here 的信息。 Mac OS X Server (1.0) 的第一个版本是 Steve Jobs 的 NeXT Computer 的 OPENSTEP 和 1999 年发布的 Mac OS 8.5.1 的混合体。
Starting with Mac OS X 10.7 (Lion) Mac OS X 和 Mac OS X Server 已合并为一个操作系统包,macOS Server 是可通过 App Store 获得的附加包。这意味着您不必担心会破坏任何太重要的东西。
你不能总是得到你想要的......
此响应中的很多价值将取决于您使用服务器包的目的。如果您只将 Web 服务器用于开发环境,则可以轻松地将其替换为任何版本的典型 LAMP (linux-apache-mysql-php) 样式环境。
对于 macOS,这意味着升级 apache,安装 php,如果您无法使用 macOS 捆绑的 SQLite,则安装 MySQL。 Here is one of the many 在线提供很棒的教程。 (无从属关系)它可能会变得复杂......
另一个流行但我自己没有使用过的选项是非营利组织XAMPP。他们专注于简化 php 开发、Wordpress、Drupal、电子商务和流行的开源应用程序的设置。
当你是陌生人时...
如果您使用的是服务器软件包附带的一些更深奥的应用程序,则必须单独升级它们。但是由于您询问的是 php 和识别它的服务器,我假设您正在谈论 Web 服务器,并且您正在使用类似这样的东西来查看 apache 正在查找的 php 版本:
<?php phpinfo(); ?>
很可能,您所说的是命令行 php 版本显示正确的版本和设置,但 apache 提供的网页版本显示的是旧版本。对吗?
版本和文件位置:
我不确定你是否检查过这个,但我要做的第一件事是确定路径是什么以及我使用的是什么版本。这也为我提供了指向 ini 文件的快速直接链接,因此我可以更快地破坏内容。这是我使用php --version 和php --ini 得到的结果(最后的截图):
$ which php
/usr/local/bin/php
$ php --version
PHP 7.3.6 (cli) (built: May 31 2019 23:38:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.6, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.7.0, Copyright (c) 2002-2019, by Derick Rethans
with Zend OPcache v7.3.6, Copyright (c) 1999-2018, by Zend Technologies
$ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/7.3
Loaded Configuration File: /usr/local/etc/php/7.3/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.3/conf.d
Additional .ini files parsed: /usr/local/etc/php/7.3/conf.d/ext-opcache.ini
有点过分了:
使用php -i 会输出大量信息。它有很多页......比你想要的还要多。如果你正在寻找细节,你可以用 grep 搜索任何你喜欢的东西:php -i | grep ini 或 php -i | grep -- '--with' 来寻找选项。
隐藏在众目睽睽之下:
您很可能正在检查、测试和升级错误安装的 php 或 apache。 macOS 因拥有许多程序的标准版本而臭名昭著,如果您升级其中任何一个的“系统”版本,它可能会破坏某些东西。
Ruby 和 Python 是最常见的给我带来问题的。我从来没有遇到过 php 的任何问题,但是对于许多程序(例如,coreutils 用于 gnu)有很多解决方法。
自制!
我发现的最简单的方法是使用Homebrew 安装一个单独的版本,您可以随意管理和升级该版本,并将其链接到您路径的早期某个位置,因此它始终是找到的第一个版本。
$ brew install php
它为您做所有事情并保持更新。它还允许 php 始终使用brew services start php 作为服务运行。这减少了启动时间并防止了一些多版本问题。如您所料,可以使用brew services list 找到所有 brew 服务和状态信息的列表。如果您更新任何配置或 ini 文件,您应该使用brew services restart php 重新启动 php(和 apache)。如果您愿意,您仍然可以使用launchctl 和apachectl。
阿帕奇!
自制软件的另一个方便之处在于,您还可以使用它来安装和管理apache2。试试这个:
$ brew install httpd
$ brew services start httpd
$ httpd
无酒精配方:
如果您喜欢弃权而不使用自制软件,您可以从php.net 安装您希望的任何版本,并在您的PATH 的早期目录中创建一个链接。补丁和升级是定期的,一切都非常专业并且有很好的(结束?)记录。
下载一个 php 二进制文件,使用提供的签名对其进行检查,然后将其链接到路径中的某个位置:ln -s /path/to/new/php ~/bin/php 或其他位置(如果您不使用 /home/bin)。 Homebrew 默认将链接放在/usr/local/bin 中。
无论您选择哪种方法,安装程序后,您肯定需要调整一些设置。网上有几篇关于这个的很棒的帖子。 This one 是一个多部分系列,针对 Mojave 进行了更新。可以帮助您入门的主要信息如下面的屏幕截图所示。