Xampp windows 10 上的国际扩展无法安装
Xampp Intl extension on windows 10 can't be installed
我尝试在 Xampp (php 7.2.5) 上安装 Megento 2,在安装过程中我发现国际扩展安装错误
为了成为 php.ini
中的 extension=intl
,我做了每一件事 ;extension=intl
我还从 xampp/php
复制了所有文件 icu*.dll
到 xampp/php/ext
和 xampp/apache/pin
目录,当然我重新启动了 Apache。
同时下载 MSVCP110.dll
并粘贴到 C:\Windows\System32
还检查了PHP系统变量中的路径,没问题。
但直到现在,国际扩展名都无法使用
有什么帮助吗?
您需要更改 php.ini 文件中的 [intl] 部分 -
更改以下部分
________________________________
[国际]
;intl.default_locale =
;该指令允许您在某些错误
时产生 PHP 错误
;发生在国际函数中。该值是产生错误的级别。
;默认值为 0,不会产生任何错误。
;intl.error_level = E_WARNING
;intl.use_exceptions = 0
____________________________________
到
________________________________
[国际]
intl.default_locale = en_utf8
;该指令允许您在某些错误
时产生 PHP 错误
;发生在国际函数中。该值是产生错误的级别。
;默认值为 0,不会产生任何错误。
intl.error_level = E_WARNING
;intl.use_exceptions = 0
____________________________________
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_intl.dll 文件存在于您的 php 扩展目录中
- 单独安装PHP: C:\path\to\php\ext\
- 对于 xampp: C:\path\to\xampp\php\ext
- (注意:您的盘符可能不同)
如果文件存在:
- 搜索配置文件(php.ini,通常与 php 可执行文件位于同一文件夹中)并打开它。您可以通过 运行ning php --ini
轻松找到它
- 确保“extension=php_intl.dll”行存在且未被注释
- 重新启动网络服务器(通常是 apache)
- 使用 phpinfo() 或 运行
php - me
in cmd 检查扩展是否启用
如果文件不存在:
- 通过运行使用“php -v”命令
检查您的php版本
- 从 PHP 下载页面下载与您的对应的 PHP 版本(TS/NTS、x86/x64)
- 为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,重新启动网络服务器并再次检查 phpinfo()。新的扩展现在应该有自己的部分。
如果扩展没有出现在 phpinfo() 中,您应该检查日志以了解问题的来源。
如果您从命令行 (CLI) 使用 PHP,可以直接在屏幕上读取扩展加载错误。
如果您将 PHP 与 Web 服务器一起使用,则日志的位置和格式会因您的软件而异。请阅读您的 Web 服务器文档以找到日志,因为它与 PHP 本身没有任何关系。
常见问题是 DLL 的位置、php.ini 中“extension_dir”设置的值和编译时设置不匹配。
如果问题出在编译时设置不匹配,您可能没有下载正确的 DLL。尝试使用正确的设置再次下载扩展程序。同样,phpinfo() 可以提供很大的帮助。
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 here
我尝试在 Xampp (php 7.2.5) 上安装 Megento 2,在安装过程中我发现国际扩展安装错误
为了成为 php.ini
中的extension=intl
,我做了每一件事 ;extension=intl
我还从 xampp/php
复制了所有文件 icu*.dll
到 xampp/php/ext
和 xampp/apache/pin
目录,当然我重新启动了 Apache。
同时下载 MSVCP110.dll
并粘贴到 C:\Windows\System32
还检查了PHP系统变量中的路径,没问题。
但直到现在,国际扩展名都无法使用
有什么帮助吗?
您需要更改 php.ini 文件中的 [intl] 部分 -
更改以下部分
________________________________
[国际]
;intl.default_locale =
;该指令允许您在某些错误
时产生 PHP 错误;发生在国际函数中。该值是产生错误的级别。
;默认值为 0,不会产生任何错误。
;intl.error_level = E_WARNING
;intl.use_exceptions = 0
____________________________________
到
________________________________
[国际]
intl.default_locale = en_utf8
;该指令允许您在某些错误
时产生 PHP 错误;发生在国际函数中。该值是产生错误的级别。
;默认值为 0,不会产生任何错误。
intl.error_level = E_WARNING
;intl.use_exceptions = 0
____________________________________
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_intl.dll 文件存在于您的 php 扩展目录中
- 单独安装PHP: C:\path\to\php\ext\
- 对于 xampp: C:\path\to\xampp\php\ext
- (注意:您的盘符可能不同)
如果文件存在:
- 搜索配置文件(php.ini,通常与 php 可执行文件位于同一文件夹中)并打开它。您可以通过 运行ning php --ini 轻松找到它
- 确保“extension=php_intl.dll”行存在且未被注释
- 重新启动网络服务器(通常是 apache)
- 使用 phpinfo() 或 运行
php - me
in cmd 检查扩展是否启用
如果文件不存在:
- 通过运行使用“php -v”命令 检查您的php版本
- 从 PHP 下载页面下载与您的对应的 PHP 版本(TS/NTS、x86/x64)
- 为php找线程安全,运行:
php -i | findstr “Thread”
,xampp自带的版本一般是Thread Safety => enabled
。
- 为php找线程安全,运行:
- 在该版本的 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,重新启动网络服务器并再次检查 phpinfo()。新的扩展现在应该有自己的部分。
如果扩展没有出现在 phpinfo() 中,您应该检查日志以了解问题的来源。
如果您从命令行 (CLI) 使用 PHP,可以直接在屏幕上读取扩展加载错误。
如果您将 PHP 与 Web 服务器一起使用,则日志的位置和格式会因您的软件而异。请阅读您的 Web 服务器文档以找到日志,因为它与 PHP 本身没有任何关系。
常见问题是 DLL 的位置、php.ini 中“extension_dir”设置的值和编译时设置不匹配。
如果问题出在编译时设置不匹配,您可能没有下载正确的 DLL。尝试使用正确的设置再次下载扩展程序。同样,phpinfo() 可以提供很大的帮助。
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 here