在 Mac 上的 XAMPP 上安装 PHP 7.0 国际化扩展 (Intl)

Dan*_*y F 5 php macos pecl php-extension intl

我按照此处概述的说明进行操作:

在 Mac 上的 XAMPP 上安装 PHP 国际化扩展 (Intl)

Ran sudo pecl install intl 从 Cellar 中选择了正确的文件

然后发生了这个错误:

/private/tmp/pear/temp/intl/intl_error.h:24:10:致命错误:找不到“ext/standard/php_smart_str.h”文件

包括

     ^ 1 error generated. make: *** [php_intl.lo] Error 1 ERROR: `make' failed
Run Code Online (Sandbox Code Playgroud)

不管怎样,做了一些研究,发现 PHP 7.0.8 弃用了 php.smart_str.h 到 php.smart_string.h

因此,鉴于我对 C++ 的了解很少,我将 smart_string.h 复制到 smart_str.h 并将所有标头从 STRING 重命名为 string......

重新运行pecl - 不走运......更多错误......不知道.c文件在哪里并重新制作php(对走那么远并不真正感兴趣),因为无论如何我正在使用XAMPP所以结束了选项。

我的 mac 上有 php 5.5,位于 usr/local/bin 文件夹深处,所以下一步是让 pecl 使用这些文件并生成 intl.so 文件......

是吗....我有 intl.so 文件,因此将其放入 XAMPP 中的“扩展”文件夹中(以供参考:/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012 )

运行 php 并出现以下错误:

警告:PHP 启动:无法加载动态库 '/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012/intl.so' - dlopen(/Applications/XAMPP/xamppfiles/lib/ php/extensions/no-debug-non-zts-20151012/intl.so,9):找不到符号:_zval_used_for_init 引用自:/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts- 20151012/intl.so 预期位于: /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012/intl.so 中的平面命名空间,第 0 行未知

我想这与不同版本有关?

无论如何,我无法让 pecl 在 XAMPP 上的 PHP 7.0.8 中安装 intl,而不会出现 make 错误。没有关于此的文档,您会认为如果您弃用 header.h 文件,您会更新所有扩展吗?

在 PHP 7 中安装 intl.so 似乎不可能?

Dha*_*l M 4

经过大量研究,我终于能够解决这个问题。详细步骤在这里

\n\n

在开始之前,请检查which php路径是否已设置。它应该是/Applications/XAMPP/xamppfiles/bin/php。如果没有,您可以通过更改它PATH="/Applications/XAMPP/xamppfiles/bin:${PATH}"更多详细信息请参见此处

\n\n

总体想法是您自己从 PHP 源代码构建 intl 扩展。在开始之前,请确保您已经安装了 Xcode。另外,安装最新版本的 autoconf。这可能有帮助:

\n\n
brew install autoconf\n
Run Code Online (Sandbox Code Playgroud)\n\n

接下来从 php.net 下载您在 XAMPP 中使用的 PHP 版本。我正在使用 7.1.18。这个版本对我有用:php-7.1.31,我猜测如果您按照以下步骤操作,它也可能适用于 7.0 或 7.2。请告诉我是否有效,我\xe2\x80\x99将更新这篇文章。不要将 PHP 7.3 用于 Magento 2.3.0,它不受支持。

\n\n

使用提取 tar.gz 文件(我将其提取到 ~/Downloads/ 文件夹中)

\n\n
tar -xzvf php-7.1.31.tar.gz\n
Run Code Online (Sandbox Code Playgroud)\n\n

cd 进入解压的文件夹

\n\n
cd php-7.1.31\n
Run Code Online (Sandbox Code Playgroud)\n\n

更改为子文件夹 ext/intl

\n\n
cd ext/intl/\n
Run Code Online (Sandbox Code Playgroud)\n\n

运行这些命令来构建扩展

\n\n
/Applications/XAMPP/bin/phpize\n./configure --enable-intl --with-php-config=/Applications/XAMPP/bin/php-config --with-icu-dir=/Applications/XAMPP/xamppfiles/\nmake\nsudo make install \n
Run Code Online (Sandbox Code Playgroud)\n\n

您现在可以删除下载的所有文件以及提取的文件夹。

\n\n

打开 /Applications/XAMPP/xamppfiles/etc/php.ini ,然后添加extension=intl.so

\n\n

使用 XAMPP GUI 重新启动 Apache,它应该可以工作。

\n