国际扩展名:安装php_intl.dll


76

我正在尝试查找php_intl.dll并安装它。

有人有提示吗?

Answers:



94

为了使php_intl.dll扩展正常工作,您需要在文件夹中拥有以下文件PATH

  • icudt36.dll
  • icuin36.dll
  • icuio36.dll
  • icule36.dll
  • iculx36.dll
  • icutu36.dll
  • icuuc36.dll

默认情况下,它们位于您的PHP目录中,但该目录不一定位于您的目录中PATH(使用xampp不适用于我)

这必须在您的全局路径中,而不仅仅是您用户的路径中。要设置全局路径,请依次转到系统信息(windows key + PAUSE),高级系统设置(Vista +)或高级(XP),然后单击“环境变量”按钮,然后将适当的目录添加到PATH“系统变量”列表中的变量中。


3
好答案!赞成。请注意,如果您使用的是xampp,请在对“环境变量”进行更改后重新启动xampp。
Rohit Gupta 2014年

答案很棒。帮助我解决了Yii2 MessageFormater.php的问题。非常感谢
userlond

只是第二次在另一台计算机上遇到同一问题。希望我能投票两次。
danielson317

对于php7.1.6,DLL包含数字57而不是36。解决方案仍然只是将php目录添加到PATH。
Joshua Walsh

正如在user2650636答案中指出的那样,您也可以将icu * .dll文件复制到apache / bin文件夹(或主要可执行文件所在的任何文件夹)中,而不用将其添加到路径中。尽管不是完美的方法,但这允许不同版本的PHP在同一系统上运行。
youen

58

我安装了XAMPP 1.8.3-0和PHP 5.5.0。

1)编辑php.ini:

;extension=php_intl.dll

extension=php_intl.dll

注意:修改后,需要保存文件(php.ini)以及重新启动Apache Server。

2)只需复制所有icu * * * * .dll文件:

C:\ xampp \ php

C:\ xampp \ apache \ bin

然后国际扩展有效!!!


1
@rab确保已安装所需的VC ++可再发行组件包版本,其中包含msvcp*DLL。您提到的文件msvcp110.dll应包含在VC ++ 2012 Redist程序包中。
khargoosh

太好了,在Windows 10上,Jeremy Warne的答案不起作用,但这可行。谢谢!
PHPst

这是我的问题已解决的问题。在我用PHP7安装另一个xampp软件包后,这个问题发生了。谢谢!
jroi_web

15

遇到了同样的问题...我通过在驱动器中搜索icu * * .dll找到了所需的文件,并找到了上面列出的文件,但在php文件夹中使用46而不是36。我将它们复制粘贴到apache / bin文件中,并尝试启动apache并最终启动。现在,在“服务器检查”页面上,它已从“黄色检查”更改为“绿色确定”。希望这可以帮助。


我以为这是我的问题,但事实证明我的PATH变量有错字!确保您的路径绝对正确,并且您可能不需要复制到apache / bin中
alexleonard 2013年

9

如果您阅读错误消息,则缺少“ icuuc36.dll”。问题是您的PATH中没有PHP目录,或者您可以将所有“ intl”文件从php目录复制到apache \ bin目录。它们是:icudt36.dll icuin36.dll icuio36.dll icule36.dll iculx36.dll icutu36.dll icuuc36.dll


3

对于WampServer 2.5Apache 2.4.9PHP 5.5.12):

默认情况下,我已经php_intl 启用(您可以启用它,当你left click on the wamp icon in the system tray > PHP > PHP extensions和检查,如果是它标志着)

为了使其正常工作,我必须复制

C:\ wamp \ bin \ php \ php5.5.12 \ icu ** 51.dll

(共8个文件)

C:\ wamp \ bin \ apache \ apache2.4.9 \ bin

然后,只需重新启动沼泽,一切都很好。


xampp仅6个文件
Savan Dholu'3

3

我有PHP 5.3.1和Apache

当我将extension=php_intl.dllphp.ini添加 到php.ini并重新启动apache时,会出现一条警告,提示“请求的操作已失败”

而在事件监视器上的此错误:

Faulting application name: httpd.exe, version: 2.2.14.0, time stamp: 0x4ac181d6
Faulting module name: php5ts.dll, version: 5.3.1.0, time stamp: 0x4b051b35
Exception code: 0xc0000005

问题是缺少icudt36.dll之类的DLL(被sysinternals ProcMon注意到),我已经下载了PHP 5.3.1 zip版本并将所有DLL都提取到了PHP文件夹中。那解决了问题。



2

我有IIS 7,并在Windows 7上使用Microsoft Web Platform Installer安装了PHP。在IIS中,转到设置主页-> PHP扩展->启用或禁用扩展中的PHP管理器。默认情况下,国际扩展名是禁用的。

我希望这有帮助


这如何回答这个问题?
Kmeixner,2015年

我以为他正在寻找php_intl.dll,因为他在启用PHP中的intl扩展时遇到了问题,至少我是这样。如果没有,那么对不起。我的错
约翰·马肯


1

当我遇到此问题时,使用以下提到的步骤进行了整理:

编辑php.ini:

使

; extension = php_intl.dll至

扩展名= php_intl.dll只需从

C:\ xampp \ php到C:\ xampp \ apache \ bin

另外,如果您有msvcp110.dll丢失的文件错误。您必须下载正确的.dll或仅转到http://www.microsoft.com/es-es/download/confirmation.aspx?id=30679并安装vcredist_x64.exe和vcredist_x86.exe。

现在,国际扩展名应该可以工作了:-)



1

该软件包已经包含在PHP 7.2及更高版本的扩展中,您只需要在php.ini中取消注释以下行即可

extension=intl

此取消注释方法适用于Windows的大多数php扩展,但不适用于intl。为了使intl正常工作,您还必须将所有icu * .dll从php文件夹复制到apache \ bin文件夹。
吴彦祖

0

/在这里挖/

icu*****.dll文件移动到/ext/似乎也可以解决该问题。

(当然,如果您指定了扩展目录)


0

在我的xampp控制面板中,单击“配置”以打开php.ini。

去掉 ; 在

; extension = php_intl.dll

然后重新启动apache。


0

这样做有更好的方法。

我在ldap,intl,curl php扩展中遇到了同样的问题。我已经通过以下方式解决了这些问题:

首先,您需要通过删除以下各行前面的分号(;)来检查php.ini文件中是否已启用这些扩展名:

;extension=php_intl.dll
;extension=php_ldap.dll
;extension=php_curl.dll

现在,您可以从httpd.conf(Apache配置文件)文件中直接加载那些必需的dll文件(即libeay32,libssh2,ssleay32,icu **。dll)。您无需执行任何其他操作,例如将它们复制到apache的bin目录或php的ext目录。只需将它们直接添加到您的apache的httpd.conf文件中即可。

请注意,以下示例适用于PHP 5.5.x版本。

LoadFile  "C:/php/icudt51.dll"
LoadFile  "C:/php/icuin51.dll"
LoadFile  "C:/php/icuio51.dll"
LoadFile  "C:/php/icule51.dll"
LoadFile  "C:/php/iculx51.dll"
LoadFile  "C:/php/icutest51.dll"
LoadFile  "C:/php/icutu51.dll"
LoadFile  "C:/php/icuuc51.dll"

LoadFile  "C:/php/libeay32.dll"
LoadFile  "C:/php/libssh2.dll"
LoadFile  "C:/php/ssleay32.dll"

而已。现在,重新启动apache或wamp,您一切顺利。


0
  1. 在您的wampserver中的php扩展名下,确保选中了intl
  2. 检查您的php / v7.0 / php文件中的extension_dir,确保目录未注释且准确
  3. (不知道这是否有所帮助,但我做了全部三件事)在扩展名列表中与上述2相同的文件中,包含与其他格式相同的intl文件(如果不包括在内)。祝一切顺利

0

我无法让intl在Windows 10上使用PHP 7.1.7和PhpStorm运行。根据此处的其他答案,我可以说这是PATH / DLL依赖性问题,但即使在之后我似乎也找不到所有所需的文件(重新)安装Visual C ++可再发行组件。

最终,我在C:驱动器中搜索vcr * .dll,并在C:\Program Files\Mozilla Firefox目录中找到vcruntime140.dll的副本。因此,除了对php.ini进行这些更改外:

extension_dir = "ext"
extension=php_intl.dll

我还将运行时PATH设置为仅PHP目录(在我的情况下为C:\Program Files\PHP\7.1.7)和Firefox目录(在上面),并且最终可以正常工作!我知道它不仅需要vcruntime140.dll,而且其他必需的DLL也必须位于FF目录中(有几十个,但我没有费心找出哪些是必需的)。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.