我该如何在自带osx high sierra的PHP 7.1.7中安装intl PHP扩展?
我该如何在自带osx high sierra的PHP 7.1.7中安装intl PHP扩展?
我遇到了完全相同的问题。正如其他在这里发表评论的人指出的那样,High Sierra自带PHP 7.1,并且该PHP版本已经安装了intl。
在我的情况中,我按照Neodork评论中的部分步骤进行操作,链接在以下Valet+问题中:
"安装" 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
检查是否安装了Intl扩展
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
希望对你有所帮助!
在从brew/php
到brew/core
的整合后,默认安装了intl
扩展。 我也遇到了intl
扩展不起作用的问题。我的问题是命令行环境未使用安装的PHP版本,而是macOS系统的默认版本。
要启用安装的PHP版本,您需要执行以下操作:
在
brew install php@7.1
之后
您需要链接已安装的PHP版本:
brew link php@7.1
然后,您需要打开一个新的终端窗口以使其生效。
接着,双重检查PHP二进制文件路径,
which php
确保它是
/usr/local/bin/php
而不是
/usr/bin/php
然后检查intl扩展是否已启用,
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
享受!
$ brew uninstall php71
再输入 brew install php71 --with-pear
。这将卸载 php71 并重新安装带有 PEAR 扩展的 php71 版本。 - miguelrhomebrew/core
,配方已被重命名为 php@7.1
。默认情况下包括 intl
扩展,无需手动加载或安装。 - webmaster777我正在运行安装在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"
PHP Warning: PHP Startup: intl: Unable to initialize module Module compiled with module API=20170718 PHP compiled with module API=20160303 These options need to match in Unknown on line 0
- Juliano Vargashttps://s3-eu-west-1.amazonaws.com/php-osx.liip.ch/install/5.6-10.10/frontenddev/5.6-10.10-frontenddev-5.6.36-20180703-123509.tar.bz2
(对于我的php 5.6)下载所需的文件,并将“intl.so”复制到 xamppfiles/lib
,并在 php.ini
中更新相应的链接。 - Ibrahim.H在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
除了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
brew update
和 brew doctor
命令。 brew install php@7.1
(根据需要更改版本),intl已包含在所有php公式中。 php -m | grep intl
。您将看到intl扩展被包含在内。如果没有,请检查php.ini文件并确保正在加载扩展程序。phpinfo()
中无法看到版本号7.2。
即使使用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,它就能正常工作了。
ls -la /usr/local/sbin/
弹出了什么,请检查其权限。否则,您将不得不创建它并使用以下命令调整正确的权限:sudo mkdir /usr/local/sbin && sudo chown -R \
whoami`:admin /usr/local/sbin` 该信息来源于此处:https://github.com/Homebrew/homebrew-php/issues/4527 - MadHatter365which php
指向了/usr/local/opt/php@7.1/bin/php
。你可以试试看是否可行。 - DerpyNerd