Windows 10 上的 Xampp Intl 扩展无法安装

问题描述 投票:0回答:4

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

我在 php.ini 中做了所有事情

;extension=intl
extension=intl

我还将所有文件

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

还下载

MSVCP110.dll
并将其粘贴到
C:\Windows\System32

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

但直到现在国际扩展还无法工作

有什么帮助吗?

php magento xampp windows-10 intl
4个回答
5
投票

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 或
Visual C++ Redistributable 2015
就够了。

您可以在此处查看列表并下载 Visual C++ Redistributable


5
投票

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

对于基于 Windows 的服务器:

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

  • 对于单独安装的 PHP:C:\path o\php xt\
  • 对于 xampp:C:\path o\xampp\php xt
  • (注意:您的驱动器盘符可能不同)

如果文件存在:

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

如果文件不存在:

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

故障排除

一些 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

____________________________________


0
投票

谢谢,@ewwink ...到处寻找解决方案,需要的是用于 x64 机器的 Visual C++ Redistributable。

© www.soinside.com 2019 - 2024. All rights reserved.