繁体   English   中英

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

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

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

  • 我在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 base dir中找到并加载icu * .dll文件。

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

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

你说你已经验证了C:\\wamp\\php5.5在你的PATH 窗口有两种环境变量:用户和系统变量。

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

我有这个完全相同的问题,经过近5个小时的工作,我终于得到了解决。 我必须做出两个主要的改变。

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

provided as a comment here gave me the second thing that I needed to do - add the path to the ext folder to windows $PATH variable. 2) 作为注释提供答案在这里给了我,我需要做的第二件事-路径添加到ext文件夹到Windows $ PATH变量。

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

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

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

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

这让我发疯了。 我在我的路径上有所有icu dll等。最后安装Visual C ++ 2015 x86为我解决了它。

完整的修复方法是更改​​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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM