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”文件
包括
Run Code Online (Sandbox Code Playgroud)^ 1 error generated. make: *** [php_intl.lo] Error 1 ERROR: `make' failed
不管怎样,做了一些研究,发现 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 似乎不可能?
经过大量研究,我终于能够解决这个问题。详细步骤在这里:
\n\n在开始之前,请检查which php路径是否已设置。它应该是/Applications/XAMPP/xamppfiles/bin/php。如果没有,您可以通过更改它PATH="/Applications/XAMPP/xamppfiles/bin:${PATH}"。更多详细信息请参见此处
总体想法是您自己从 PHP 源代码构建 intl 扩展。在开始之前,请确保您已经安装了 Xcode。另外,安装最新版本的 autoconf。这可能有帮助:
\n\nbrew install autoconf\nRun 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\ntar -xzvf php-7.1.31.tar.gz\nRun Code Online (Sandbox Code Playgroud)\n\ncd 进入解压的文件夹
\n\ncd php-7.1.31\nRun Code Online (Sandbox Code Playgroud)\n\n更改为子文件夹 ext/intl
\n\ncd ext/intl/\nRun 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 \nRun Code Online (Sandbox Code Playgroud)\n\n您现在可以删除下载的所有文件以及提取的文件夹。
\n\n打开 /Applications/XAMPP/xamppfiles/etc/php.ini ,然后添加extension=intl.so
使用 XAMPP GUI 重新启动 Apache,它应该可以工作。
\n| 归档时间: |
|
| 查看次数: |
8868 次 |
| 最近记录: |