如何在 osx high sierra 随附的 PHP 7.1.7 中安装 intl PHP 扩展?
11 回答
所以我遇到了完全相同的问题。正如其他人在这里评论所指出的那样,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
希望能帮助到你!
集成 from brew/php
to后brew/core
,intl
默认安装包含扩展。我也有同样的问题,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
这个对我有用。
打开终端然后输入:
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
享受!
在 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
我在 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”,只是为了更好的组织。
除了L. Grolleau 所说的(运行),将路径brew install php71-intl
粘贴到文件末尾:int.so
/php.ini
extension=/usr/local/Cellar/php71-intl/7.1.11_20/intl.so
我找到了解决办法。
curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1
然后我将 intl.so 从安装复制到我的扩展目录,该目录定义在我的 php.ini 中。
我已经设法解决了这个问题。
首先使用 brew 完全卸载任何 php 包,然后运行brew update
andbrew doctor
命令。
现在安装brew install php@7.1
(根据需要更改版本) intl 包含在所有 php-formulae 的构建中。
确认它正在运行php -m | grep intl
。您将看到包含 intl 扩展名。如果不检查 php.ini 文件并确保正在加载扩展。
我用 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,它工作正常。
尝试这个
brew install homebrew/php/php71-intl