为什么可以';t Windows上的PHP请参阅扩展PHP_intl.dll,即使它存在


Why can't PHP on Windows see extension php_intl.dll even though it exists?

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

  • 我已经取消了php.ini中"extension=php_intl.dll"一行的注释
  • 我已经验证了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在我的PATH中
  • 是的,我正在编辑的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资源管理器,对着我的电脑大喊:"看!STINKIN'文件就在那里!"你知道为什么我能看到这个文件,而PHP却看不到,尽管我们显然在同一个目录中查找?还是我错过了其他事情?

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

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

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

您说您已验证C:'wamp'php5.5在您的PATH中。Windows有两种类型的环境变量:用户变量和系统变量。

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

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

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

2) alaya dot com上的smaines在这里作为评论提供的答案给了我第二件需要做的事情——将ext文件夹的路径添加到windows$path变量中

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

  • 转到我的计算机
  • 右键单击并选择属性
  • 单击左侧的"高级系统设置"
  • 单击顶部的"高级"选项卡
  • 单击"环境变量"按钮
  • 在变量列表中搜索以找到"Path"变量,然后选择它
  • 单击"编辑…"按钮(选择"路径"变量时)
  • 这将打开另一个包含两个输入字段的对话框。底部的一个是变量,选择它
  • 在末尾附加一个分号,然后是路径,在这种情况下,您可以键入";C: ''wamp''php5.5''ext'(分号只是将其与上一个路径分隔开
  • 在所有出现的对话框中单击"确定"以关闭它们

进行上述更改后,您需要重新启动计算机才能使其生效

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

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

p>完整修复将更改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',
);

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

(Windows 7 GUI)

要管理员访问"环境变量:系统变量",请按照此处的说明进行操作:https://kb.wisc.edu/cae/page.php?id=24500

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

  • 为我工作

对上述消息的更正

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

在我的案例中,它是C:''wamp''bin''php''php5.5.12,而不是C:''wamp/bin''php''php5.5.12''ext.