为什么Windows上的PHP看不到扩展名php_intl.dll,即使它存在?

时间:2013-07-31 17:14:12

标签: php intl

我一直试图让我的测试工作站(PHP 5.5.1,Apache 2.2.4,Windows 7 32位)上的intl扩展工作。似乎无论我尝试什么,我都无法启动并运行。

  • 我已取消注释该行" extension = php_intl.dll"在我的php.ini。
  • 我已验证extension_dir指令指向正确的目录(c:\ wamp \ php5.5 \ ext)。
  • 我已验证php_intl.dll位于c:\ wamp \ php5.5 \ ext。
  • 我已验证所有icu * .dll文件都存在于php根目录(c:\ wamp \ php5.5)中。
  • 我已经确认c:\ wamp \ php5.5在我的路径中。
  • 是的,php.ini我编辑的副本是正确的,是httpd.conf中PHPIniDir指令指定的副本。

我已经检查了Apache错误日志,每次重新启动Apache时都会找到此行:

PHP警告:PHP启动:无法加载动态库&c; \ wamp \ php5.5 \ ext \ php_intl.dll' - 找不到指定的模块。\ r \ n在第0行的未知中

我重复一遍,但c:\ wamp \ php5.5 \ ext \ php_intl.dll已经存在!

我很想尝试指向Windows资源管理器并在我的电脑上大喊大叫,"看!斯金林'文件是正确的!"知道为什么我可以看到文件和PHP,即使我们显然在同一目录中看到它?或者是我错过的其他事情?

7 个答案:

答案 0 :(得分:15)

确保Apache可以从PHP base目录中找到并加载icu * .dll文件。

快速,简单的解决方案是将这些dll复制到Apache bin目录。

答案 1 :(得分:4)

虽然SeventyFourLaboratories的解决方案很简单且有效,但有一个解决方案不需要您修改Apache或PHP发行版(有时,您不允许在生产服务器中更改它们。)

您说您已验证C:\wamp\php5.5PATH。 Windows有两个环境变量:用户和系统变量。

我尝试在我的用户变量C:\wamp\php5.5中设置PATH,但它不起作用。但是,在系统变量PATH中设置它可以使其正常工作。因此,您应该验证是否使用PATH系统变量来配置Apache而不是具有相同名称的用户变量。

答案 2 :(得分:3)

我遇到了同样的问题,经过近5个小时的工作,我终于解决了问题。我必须做出两个主要的改变。

1)当我下载我试图使用的扩展时,除了.dll文件之外还附带了许多其他文件 - 其中大多数是.pdb。我将所有这些文件移动到包含.dll文件的ext文件夹中。

2)作为评论here提供的的答案在alaya dot com 上给出了我需要做的第二件事 - 将ext文件夹的路径添加到windows $ PATH变量。

有很多方法可以做到,这里有一个:

  • 转到我的电脑
  • 右键单击并选择属性
  • 点击左侧的“高级系统设置”
  • 点击顶部的“高级”标签
  • 点击“环境变量”按钮
  • 搜索变量列表以查找“路径”变量,选择它
  • 点击“编辑...”按钮(选择“路径”变量时)
  • 这将打开另一个包含两个输入字段的对话框。底部是变量,选择它。
  • 在结尾附加一个分号然后是路径,在这种情况下你要键入'; C:\ wamp \ php5.5 \ ext'(分号只是将它与前一个路径分开
  • 在所有关闭它们的对话框中单击“确定”

完成上述更改后,您需要重新启动计算机才能生效。

我希望有所帮助,对我有用。这似乎是一个相当普遍的问题 - 至少我发现了很多关于它及其变体的讨论。

答案 3 :(得分:3)

这让我发疯了。我的路径中有所有icu dll等。最后安装Visual C ++ 2015 x86 为我解决了这个问题。

答案 4 :(得分:1)

完整的修复方法是更改​​C:\ wamp \ scripts \ config.inc.php,如下所示:

查找该文件的此部分

$phpDllToCopy = array (
'fdftk.dll',
'fribidi.dll',
'libeay32.dll',
'libmhash.dll',
'libmysql.dll',
'msql.dll',
'libmysqli.dll',
'ntwdblib.dll',
'php5activescript.dll',
'php5isapi.dll',
'php5nsapi.dll',
'ssleay32.dll',
'yaz.dll',
'libmcrypt.dll',
'php5ts.dll',
'php4ts.dll');

并将其更改为

$phpDllToCopy = array (
'fdftk.dll',
'fribidi.dll',
'icudt51.dll', // - Additions to avoid unknown error PHP 5.5.5
'icuin51.dll',
'icuio51.dll',
'icule51.dll',
'iculx51.dll',
'icutest51.dll',
'icutu51.dll',
'icuuc51.dll',
'icudt50.dll', // - Additions to avoid unknown error PHP 5.5
'icuin50.dll',
'icuio50.dll',
'icule50.dll',
'iculx50.dll',
'icutest50.dll',
'icutu50.dll',
'icuuc50.dll',
'icudt49.dll', // - Additions to avoid unknown error PHP 5.3/5.4
'icuin49.dll',
'icuio49.dll',
'icule49.dll',
'iculx49.dll',
'icutest49.dll',
'icutu49.dll',
'icuuc49.dll',
'libeay32.dll',
'libmhash.dll',
'libmysql.dll',
'libsasl.dll', // - Additions to avoid unknown error
'msql.dll',
'libmysqli.dll',
'ntwdblib.dll',
'php5activescript.dll',
'php5isapi.dll',
'php5nsapi.dll',
'ssleay32.dll',
'yaz.dll',
'libmcrypt.dll',
'php5ts.dll',
'php4ts.dll',
);

答案 5 :(得分:1)

如何将PHP.exe位置添加到PATH。

(Windows 7 GUI)

对于“环境变量:系统变量”的管理员访问权限,请按照此处的说明操作: https://kb.wisc.edu/cae/page.php?id=24500

在“环境变量:系统变量”中,编辑“路径”变量并在现有字符串前缀(不要删除它),并附上您的位置。例如:C:\ wamp \ bin \ php \ php5.5.12;

  • 为我工作。

答案 6 :(得分:0)

对上述消息的更正

如果要将php文件夹添加到PATH,请确保添加php文件夹,而不是php / ext文件夹。

在我的情况下它是C:\ wamp \ bin \ php \ php5.5.12,而不是C:\ wamp \ bin \ php \ php5.5.12 \ ext。