33

如何在 osx high sierra 随附的 PHP 7.1.7 中安装 intl PHP 扩展?

4

11 回答 11

62

所以我遇到了完全相同的问题。正如其他人在这里评论所指出的那样,High Sierra 安装了 PHP 7.1,并且这个 PHP 版本已经用它进行了 intl 编译

就我而言,我在以下Valet+ 问题中遵循了 Neodork 评论的部分内容:

“安装”PHP 7.1(所以它来自 brew 本身,而不是 High Sierra 安装的那个)

brew install php@7.1

将其升级到最新版本

brew upgrade php@7.1

Cellar 中引用的符号链接:

brew link --overwrite --force php@7.1

在我的 bash 配置文件中更改 PHP 路径

echo 'export PATH="/usr/local/opt/php@7.1/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.1/sbin:$PATH"' >> ~/.bash_profile

重新加载您的 bash 配置文件(您可以关闭终端并再次打开它)

. ~/.bash_profile

检查国际

php -m | grep intl

注意:如果您遇到以下警告:

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/opt/php71-intl/intl.so'

然后你必须禁用以前的 intl:

mv /usr/local/etc/php/7.1/conf.d/ext-intl.ini /usr/local/etc/php/7.1/conf.d/ext-intl.ini.disabled

希望能帮助到你!

于 2018-07-10T21:20:52.403 回答
19

集成 from brew/phpto后brew/coreintl默认安装包含扩展。我也有同样的问题,intl扩展程序不起作用。我遇到的问题是命令行环境没有使用已安装的 PHP 版本,而是使用 macOS 系统的默认版本。

要启用已安装的版本,您需要执行以下操作:

brew install php@7.1

您需要通过以下方式链接已安装的 PHP 版本 brew link php@7.1

然后您需要打开一个新终端以使其生效。
然后仔细检查 PHP 二进制路径, which php

确保它 /usr/local/bin/php 不是 /usr/bin/php

然后检查是否启用了国际扩展, php -m | grep intl

这个对我有用。

于 2018-07-04T20:14:09.313 回答
11

打开终端然后输入:

brew search intl

你应该能够看到 php71-intl,然后运行

brew install homebrew/php/php71-intl

然后重启apache

sudo apachectl restart

然后输入:

php -i | grep intl

你应该能够看到这样的东西:

Additional .ini files parsed => /usr/local/etc/php/7.1/conf.d/ext-intl.ini
intl
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0

享受!

于 2017-12-25T12:11:31.833 回答
7

在 Mac 上试试这个

php -v
sudo port install php7*-intl

更多信息

您可以通过此页面https://www.macports.org/ports.php?by=name&substr=intl找到端口包

您可以port通过以下步骤进行安装:https ://guide.macports.org/chunked/installing.macports.html

curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.5.4.tar.bz2
tar xf MacPorts-2.5.4.tar.bz2
cd MacPorts-2.5.4/
./configure
make
sudo make install

并更改 ~/.bash_profile

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

如果有错误,请检查以下步骤:

检查端口

sudo port list
sudo port selfupdate
sudo port search --name --glob 'php*'
sudo port install php**-intl

此页面包含有关端口使用的更多信息:https ://guide.macports.org/chunked/using.html

于 2019-08-05T13:59:20.680 回答
7

我在 OS High Sierra 上运行 brew 1.6.2。到目前为止, brew 包中不提供 intl 扩展。

@Mondy 解决方案对我来说效果很好。运行后

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

这些软件包将在 /usr/local/php5 或 /usr/local/php5-7.0.27-20180201-135220 中可用。

因此,在您的 /usr/local/etc/php/7.0/php.ini 中,您可以放置​​以下行来启用 intl 扩展:

[intl]
extension="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20151012/intl.so"

就我而言,我更喜欢在 /usr/local/etc/php/7.0/conf.d/ 中创建一个文件“ext-intl.ini”,只是为了更好的组织。

于 2018-04-26T08:17:02.753 回答
4

除了L. Grolleau 所说的(运行),将路径brew install php71-intl粘贴到文件末尾:int.so/php.ini

extension=/usr/local/Cellar/php71-intl/7.1.11_20/intl.so
于 2017-11-17T21:23:58.993 回答
3

我找到了解决办法。

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

然后我将 intl.so 从安装复制到我的扩展目录,该目录定义在我的 php.ini 中。

于 2017-10-09T19:40:21.030 回答
1

我已经设法解决了这个问题。

首先使用 brew 完全卸载任何 php 包,然后运行brew update​​andbrew doctor命令。

现在安装brew install php@7.1(根据需要更改版本) intl 包含在所有 php-formulae 的构建中。

确认它正在运行php -m | grep intl。您将看到包含 intl 扩展名。如果不检查 php.ini 文件并确保正在加载扩展。

于 2018-04-07T08:01:28.373 回答
0

我用 brew 安装了 php7.2 并在 Mac 上与该版本链接,但在phpinfo(). 即使使用 brew 卸载,它也始终显示最新版本(7.1),因此是 intl 扩展。我发现我们必须修改 httpd.conf 文件(在我的例子中是 /etc/apache2/httpd.conf),在那个文件中你可以找到

LoadModule php7_module libexec/apache2/libphp7.so

在该行中,您必须使用新的 php72 路径覆盖:在我的情况下是

 LoadModule php7_module /usr/local/Cellar/php@7.2/7.2.31_1/lib/httpd/modules/libphp7.so

并重新启动apache,它工作正常。

于 2020-06-27T10:52:57.167 回答
0

删除以下文件

rm /usr/local/etc/php/7.1/conf.d/ext-intl.ini

为我工作,感谢homebrew-core 问题

于 2018-09-11T23:51:36.007 回答
-6

尝试这个

brew install homebrew/php/php71-intl
于 2018-02-02T21:31:17.650 回答