Brew的PHP 7.1、7.2和7.3默认启用INTL。
很可能你只是使用了Mac OS捆绑版本的PHP。
运行
ls -l $(which php)
查找当前PHP二进制文件的位置以及它是否被符号链接到Brew安装中。例如,在我的情况下:
lrwxr-xr-x 1 27 May 23 16:30 /usr/local/bin/php -> ../Cellar/php/7.3.5/bin/php
这意味着我的php
链接到了Brew的7.3.5版本。
如果您没有使用Brew的PHP,您将会看到类似以下的内容:
-rwxr-xr-x 1 11169664 Mar 21 07:09 /usr/bin/php
通过Brew安装PHP
查看您是否已经安装了PHP:
brew list | grep php
如果有任何输出,并且您的PHP版本存在,请执行步骤2,或使用步骤1更新到最新版本的PHP。
1. 安装Homebrew的PHP
brew install php@7.3
(或者 7.2、7.1)。如果 Brew 抱怨找不到公式,那么你可能已经处理了水龙头。你可以尝试提供完整路径到当前 php 公式,而不是使用 php@7.3
:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/php.rb
如果还是不行,请检查您是否运行了最新版本的Homebrew brew --version
Homebrew 2.1.3-31-geaf2370
Homebrew/homebrew-core (git revision fd1ef; last commit 2019-05-25)
Homebrew/homebrew-cask (git revision 16d50; last commit 2019-05-26)
2. 链接Homebrew的PHP
现在,要让php
“在您的路径中”,有两个选项。
a) 要么将Homebrew版的PHP从其安装位置(/usr/local/bin/Cellar/php....)链接到您的路径中的目录(例如/usr/local/bin)。为此,请运行:
brew link --force php@7.3
如果你无法链接,通常是由于设置权限或系统完整性保护引起的。在第一种情况下,请尝试
sudo chown "$USER":admin /usr/local/bin/php
。或者,在Bash中为例,请将
/usr/local/opt/php@7.3
目录(
opt-prefix)添加到你的$PATH变量中。
echo 'export PATH="/usr/local/opt/php@7.3/bin:/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
3. 验证安装
ls -l $(which php)
应该显示php
链接到Homebrew PHP安装的路径为/usr/local/bin/Cellar
。
php -v
应该显示最近安装的PHP版本。如果不是,请尝试重新启动终端。
php -i | grep -i intl
应该显示有关当前安装的intl
的一些信息。
如果您正在使用Web服务器和/或PHP FPM,则现在是重启这些服务的时候。(如果您不知道如何做或无法弄清楚,请重启系统)。
可能出现的问题
如果仍然收到有关缺少扩展名(无法加载动态库等)的警告,则您的php.ini存在问题。
查找php ini的当前位置。
$ php -i | grep \.ini
Configuration File (php.ini) Path => /usr/local/etc/php/7.3
Loaded Configuration File => /usr/local/etc/php/7.3/php.ini
Scan this dir for additional .ini files => /usr/local/etc/php/7.3/conf.d
Additional .ini files parsed => /usr/local/etc/php/7.3/conf.d/ext-opcache.ini
....
编辑 /usr/local/etc/php/7.3/php.ini 并找到有问题的扩展加载 (例如,extension="myext.so"
)。将那些找不到的注释掉。
Homebrew 权限
有人认为 chown /usr/local
是个好主意。
sudo chown -R "$USER":admin /usr/local
这将使得手动和通过 Homebrew 安装东西变得更加容易,但也会稍微降低一点安全性,因为非 root 进程现在也被允许在这里写入。
您的 Web 应用程序正在使用不同版本的 PHP。
确保它不是... 这取决于所使用的 Web 服务器的配置。第一步是在您的 Web 应用程序中输出当前的 PHP 配置,使用 <?php phpinfo();
。
这解释了 Apache 的步骤。
另一个快速获得 Web 服务器 + PHP 堆栈的方法是使用 Laravel Valet。
安装额外扩展
要安装额外的 PHP 扩展,请使用 PEAR。
pear -V
应输出当前的 PEAR 和 PHP 版本。
PEAR Version: 1.10.9
PHP Version: 7.3.5
Zend Engine Version: 3.3.5
现在,例如安装PHP的yaml扩展程序:
pear install yaml
brew install php71-intl
不再可用,而curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1
无法创建intl.so
文件,因此这些解决方案都对我无效。 - Alizsudo pecl install intl
命令之前,你尝试过执行brew install icu4c
吗? - Siad Ardroumli