【问题标题】:Xampp Intl extension on windows 10 can't be installed无法安装 Windows 10 上的 Xampp Intl 扩展
【发布时间】:2019-03-31 09:34:23
【问题描述】:

我尝试在 Xampp (php 7.2.5) 上安装 Megento 2,并通过安装过程发现 Intl 扩展安装错误

我在 php.ini 中所做的每一件事都是 ;extension=intl 成为 extension=intl

我还将所有文件 icu*.dll 文件从 xampp/php 复制到 xampp/php/extxampp/apache/pin 目录,当然我重新启动了 Apache。

同时下载MSVCP110.dll并将其粘贴到C:\Windows\System32

还检查了系统变量中的PHP路径,没问题。

但直到现在,国际扩展从未工作过

有什么帮助吗?

【问题讨论】:

  • tbf,我不确定 M2 在 Windows 上的运行情况如何,只设置了一次,而且速度比什么都慢,导致我的机器死机。最好设置一个 Linux VM(不是答案——因此是评论)
  • 你能把你的 phpinfo() 列表放上去吗?
  • 您是否安装了 Visual C++ 2015 x86?
  • 谢谢@ewwink 它现在可以工作了,在我重新启动 apache 之后,Visual C++ 中的问题?
  • 我可以在下面添加我的答案吗? :D

标签: php magento xampp windows-10 intl


【解决方案1】:

Xampp 安装文件名包含VCXX 例如xampp-win32-7.2.5-0-VC15-installer.exe,VC15 表示PHP 是用Visual Studio 2017 编译的,所以你需要安装Microsoft Visual C++ Redistributable for Visual Studio 2017 才能使PHP 和扩展程序顺利运行,但有时已经安装了VC14 或@ 987654325@就够了。

您可以查看列表并下载 Visual C++ Redistributable here

【讨论】:

    【解决方案2】:

    国际化扩展(进一步称为 Intl)是 » ICU 库的包装器,使 PHP 程序员能够执行各种区域设置感知操作,包括但不限于格式化、音译、编码转换、日历操作 - http://php.net/manual/en/intro.intl.php

    对于基于 Windows 的服务器:

    确保 php_intl.dll 文件存在于您的 php 扩展目录中

    • 对于单独安装的 PHP:C:\path\to\php\ext\
    • 对于 xampp:C:\path\to\xampp\php\ext
    • (注意:您的驱动器号可能不同)

    如果文件存在:

    • 搜索配置文件(php.ini,通常与php可执行文件在同一文件夹中)并打开它。您可以通过运行 php --ini
    • 轻松找到
    • 确保“extension=php_intl.dll”行存在且未注释
    • 重启网络服务器(通常是 apache)
    • 使用phpinfo()检查扩展是否开启,或者在cmd中运行php - me

    如果文件不存在:

    • 通过运行“php -v”命令检查您的 php 版本
    • 从 PHP 下载页面(TS/NTS、x86/x64)下载与您对应的 PHP 版本
      • 要查找php的线程安全,运行:php -i | findstr “Thread”,xampp自带的版本通常是Thread Safety => enabled
    • 在该版本的 ext 文件夹中搜索 php_intl.dll 文件并将其复制到您的 php\ext 文件夹中
    • 完成上述文件存在情况的步骤。

    疑难解答

    一些 Web 服务器会让人感到困惑,因为它们不使用位于您的 PHP 可执行文件旁边的 php.ini。要找出您的实际 php.ini 所在的位置,请在 phpinfo() 中查找其路径:或在 cmd 中运行 php --ini

    Configuration File (php.ini) Path: C:\WINDOWS
    Loaded Configuration File:         C:\xampp\php\php.ini
    Scan for additional .ini files in: (none)
    Additional .ini files parsed:      (none)
    

    激活扩展后,保存 php.ini,重新启动 Web 服务器并再次检查 phpinfo()。新的扩展现在应该有自己的部分了。

    如果扩展名没有出现在 phpinfo() 中,你应该检查你的日志以了解问题的根源。

    如果您从命令行 (CLI) 使用 PHP,则可以直接在屏幕上读取扩展加载错误。

    如果您将 PHP 与 Web 服务器一起使用,则日志的位置和格式会因您的软件而异。请阅读您的 Web 服务器文档以找到日志,因为它与 PHP 本身没有任何关系。

    常见问题是 DLL 的位置、php.ini 中“extension_dir”设置的值以及编译时设置不匹配。

    如果问题在于编译时设置不匹配,您可能没有下载正确的 DLL。尝试使用正确的设置再次下载扩展程序。同样,phpinfo() 可以提供很大的帮助。

    【讨论】:

      【解决方案3】:

      您需要更改 php.ini 文件中的 [intl] 部分 -

      更改以下部分

      ________________________________

      [国际]

      ;intl.default_locale =

      ;该指令允许您在某些错误时产生 PHP 错误

      ;发生在 intl 函数中。该值是产生的错误的级别。

      ;默认为 0,不会产生任何错误。

      ;intl.error_level = E_WARNING

      ;intl.use_exceptions = 0

      ____________________________________

      收件人

      ________________________________

      [国际]

      intl.default_locale = en_utf8

      ;该指令允许您在某些错误时产生 PHP 错误

      ;发生在 intl 函数中。该值是产生的错误的级别。

      ;默认为 0,不会产生任何错误。

      intl.error_level = E_WARNING

      ;intl.use_exceptions = 0

      ____________________________________

      【讨论】:

      • 我做了,但结果相同
      猜你喜欢
      • 2016-03-06
      • 2018-06-16
      • 2016-04-08
      • 2020-09-21
      • 2018-11-14
      • 2016-12-25
      • 2020-06-20
      • 1970-01-01
      • 2016-01-21
      相关资源
      最近更新 更多