关于Windows 10上的php:Xampp Intl扩展无法安装

Xampp Intl extension on windows 10 can't be installed

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

enter image description here

我在php.ini中做了每件事;extension=intl要成为extension=intl

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

enter image description here

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

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

但是直到现在为止,国际扩展都无法使用

有什么帮助吗?


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


Internationalization extension (further is referred as Intl) is a wrapper for ? ICU library, enabling PHP programmers to perform various locale-aware operations including but not limited to formatting, transliteration, encoding conversion, calendar operations - http://php.net/manual/en/intro.intl.php

对于基于Windows的服务器:

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

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

如果文件存在:

  • 搜索配置文件(php.ini,通常与php可执行文件位于同一文件夹中)并打开它。您可以通过运行php --ini来轻松找到它
  • 确保" extension = php_intl.dll"行存在且未注释
  • 重新启动Web服务器(通常是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()中寻找其路径:

1
2
3
4
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()可以提供很大的帮助。


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

更改以下部分

________________________________

[intl]

; intl.default_locale =

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

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

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

; intl.error_level = E_WARNING

; intl.use_exceptions = 0

____________________________________

________________________________

[intl]

intl.default_locale = en_utf8

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

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

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

intl.error_level = E_WARNING

; intl.use_exceptions = 0

____________________________________