我按照下面的说明做了:
在XAMPP上安装PHP国际化扩展(Intl)
执行命令sudo pecl install inl从地窖
中选择正确的文件那么这个错误发生了:
/private/tmp/pear/temp/intl/intl_error.h:24:10: fatal error:'ext/standard/php_smart_str.h'文件未找到
<标题>包括标题>^ 1 error generated. make: *** [php_intl.lo] Error 1 ERROR: `make' failed
没关系,我做了一些研究,发现PHP 7.0.8将PHP .smart_string.h弃用为PHP .smart_string.h
因此,鉴于我对c++的了解不多,我将smart_string.h复制到smart_string.h,并将所有的头文件从STRING重命名为STRING .....
re- run pecl -no luck....更多的错误……不知道。c文件在哪里,也不需要重新制作php(我对这么做不感兴趣),因为我使用的是XAMPP,所以结束了那个选项。
我的mac上有php 5.5,在usr/local/bin文件夹的深处下一步是让perl使用这些文件并生成一个intl。所以文件…
做……我有内情。所以把它放在XAMPP的'extensions'文件夹中(参考:/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012)
运行php,出现如下错误:
警告:PHP启动:无法加载动态库'/应用程序/XAMPP/xamppfiles/lib/php/扩展/不-调试-非zt型- 20151012/intl.so 'dlopen(/应用程序/XAMPP/xamppfiles/lib/php/扩展/不-调试-非zt型- 20151012/intl.so,9): Symbol not found: _zval_used_for_init/应用程序/XAMPP/xamppfiles/lib/php/扩展/不-调试-非zt型- 20151012/intl.so期望在:平面命名空间中/应用程序/XAMPP/xamppfiles/lib/php/扩展/不-调试-非zt型- 20151012/intl.so
我想这与不同的版本有关?
在任何情况下,我不能得到pecl安装intl没有一个错误在PHP 7.0.8 XAMPP。没有关于此的文档,您认为如果您弃用header.h文件,您会更新所有扩展名吗?
安装intl。所以在PHP 7中似乎不可能?
经过大量的研究,我终于能够解决这个问题。详细步骤如下:
开始前,检查which php
路径是否设置。应该是/Applications/XAMPP/xamppfiles/bin/php
。如果不是,你可以通过PATH="/Applications/XAMPP/xamppfiles/bin:${PATH}"
来改变它。更多细节在这里
总体思路是自己从PHP源代码构建intl扩展。在开始之前,确保你已经安装了Xcode。同时,安装最新版本的autoconf。这可能有帮助:
brew install autoconf
接下来从php.net下载XAMPP中使用的PHP版本。我用的是7.1.18。这个版本为我工作:php-7.1.31,我猜如果你按照步骤,它可能适用于7.0或7.2。请让我知道是否有,我会更新这篇文章。Magento 2.3.0不支持PHP 7.3。
解压tar.gz文件使用(我解压它在~/Downloads/文件夹)
tar -xzvf php-7.1.31.tar.gz
cd到解压文件夹
cd php-7.1.31
改为ext/intl子文件夹
cd ext/intl/
运行这些命令来构建扩展
/Applications/XAMPP/bin/phpize
./configure --enable-intl --with-php-config=/Applications/XAMPP/bin/php-config --with-icu-dir=/Applications/XAMPP/xamppfiles/
make
sudo make install
你现在可以删除你下载的所有文件和解压的文件夹。
打开/Applications/XAMPP/xamppfiles/etc/php.ini,添加extension=intl.so
使用XAMPP GUI重新启动Apache,它应该可以工作。
到目前为止,似乎扩展intl。for PHP与PHP捆绑在一起并且应该用PHP编译(intl——enabled)。XAMPP不支持(截至2016年10月),而MAMP支持。我不知道其他发行版的情况。但是,如果您愿意重新编译PHP 7,那么这样做并在编译期间启用它是值得的。
所以…我和MAMP一起跑。然后我决定安装apache 2.4和php 7和Mysql,没有堆栈和垃圾,随MAMP或XAMPP而来,一切都像魅力一样工作…所以如果你需要使用CakePHP或intl支持等…只需放弃XAMPP/MAMP并进行标准安装。我用的是自制(MacOS),一切都很好。
更新:对于Windows, XAMPP不默认它,但您可以在php.ini中添加模块(dll),并像魅力一样工作
这个错误意味着XAMPP没有使用intl
编译PHP。你可以试试:
pecl install intl
,但可能不会正常工作。
见:PHP Bug #72879 Pecl install intl make error with PHP 7.0.8.
对于解决方案,尝试安装memcached
扩展而不是memcache
,例如
pecl install memcached
注意:它还需要事先安装libmemcached
包/库。macOS: brew install libmemcached
.
如果你想尝试不自制,与本地apache和php,看看我的答案在这里:https://stackoverflow.com/a/55131868/3692846