草庐IT

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

coder 2024-04-18 原文

我按照此处列出的说明进行操作:

Install PHP Internationalization extension (Intl) on XAMPP on Mac

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

然后这个错误发生了:

/private/tmp/pear/temp/intl/intl_error.h:24:10: fatal error: 'ext/standard/php_smart_str.h' file not found

include

     ^ 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 并将所有 header 从 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 并出现此错误:

Warning: PHP Startup: Unable to load dynamic library '/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): Symbol not found: _zval_used_for_init Referenced from: /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012/intl.so Expected in: flat namespace in /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012/intl.so in Unknown on line 0

我想这与不同的版本有关?

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

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

最佳答案

经过大量研究,我终于能够解决这个问题。 Detailed steps here :

在开始之前,检查设置了 which php 路径。它应该是 /Applications/XAMPP/xamppfiles/bin/php。如果不是,您可以通过 PATH="/Applications/XAMPP/xamppfiles/bin:${PATH}" 更改它。 more detail here

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

brew install autoconf

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

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

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,它应该可以工作。

关于php - 在 Mac 上的 XAMPP 上安装 PHP 7.0 国际化扩展 (Intl),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39012363/

有关php - 在 Mac 上的 XAMPP 上安装 PHP 7.0 国际化扩展 (Intl)的更多相关文章

  1. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  2. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  3. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  4. ruby-on-rails - 如何在 mac os snow leopard 中升级 ruby​​ 和 rails - 2

    我想将我的MacSnowLeopardruby​​从1.8.7升级到1.9.1版本,有人知道轻松且最好的升级方法吗?因为我读了一些论坛/帖子/博客/讨论说覆盖苹果发布的ruby不好将Rails从版本2.2.2升级到2.3.8的最佳方法是什么?因为我找到的所有信息都仅适用于豹/老虎,而且很少有关于雪豹的复杂文章。他们还说覆盖apple提供的rails不好吗。谁能帮帮我?谢谢。 最佳答案 DanBenjamin有一些greatinstructionsforcompilingandinstallingRuby,RubyGemsandRai

  5. ruby - 在不使用 RVM 的情况下在 Mac 上卸载和升级 Ruby - 2

    我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案

  6. 阿里云国际版免费试用:如何注册以及注意事项 - 2

    作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。​关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐

  7. ruby-on-rails - Ruby - 如何从 ruby​​ 上的 .pfx 文件中提取公钥、rsa 私钥和 CA key - 2

    我有一个.pfx格式的证书,我需要使用ruby​​提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o

  8. 带有 attr_accessor 的类上的 Ruby instance_eval - 2

    我了解instance_eval和class_eval之间的基本区别。我在玩弄时发现的是一些涉及attr_accessor的奇怪东西。这是一个例子:A=Class.newA.class_eval{attr_accessor:x}a=A.newa.x="x"a.x=>"x"#...expectedA.instance_eval{attr_accessor:y}A.y="y"=>NoMethodError:undefinedmethod`y='forA:Classa.y="y"=>"y"#WHATTT?这是怎么回事:instance_eval没有访问我们的A类(对象)然后它实际上将它添加到

  9. ruby-on-rails - rails 上的 ruby : radio buttons for collection select - 2

    我有一个集合选择:此方法的单选按钮是什么?谢谢 最佳答案 Rails3中没有这样的助手。在Rails4中,它是collection_radio_buttons. 关于ruby-on-rails-rails上的ruby:radiobuttonsforcollectionselect,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/18525986/

  10. ruby-on-rails - gem install rmagick -v 2.13.1 错误 Failed to build gem native extension on Mac OS 10.9.1 - 2

    我已经通过提供MagickWand.h的路径尝试了一切,我安装了命令工具。谁能帮帮我?$geminstallrmagick-v2.13.1Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingrmagick:ERROR:Failedtobuildgemnativeextension./Users/ghazanfarali/.rvm/rubies/ruby-1.8.7-p357/bin/rubyextconf.rbcheckingforRubyversion>=1.8.5...yescheckingfor/

随机推荐