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

Per*_*rII 9 php intl

我一直在努力让我的测试工作站(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不能,即使我们显然在同一目录中?或者是我错过的其他事情?

小智 15

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

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

  • 我通过手动安装 Apache+PHP 对此进行了测试,并且成功了!我一看到你是对的,我就从 Apache24/bin 中删除了文件,所以我预计 `intl` 不会再次被识别,但它仍然有效,我想知道为什么......知道真正的答案会很有趣并让 Apache 识别那些 `icu*.dll` 文件而不复制它们。有人知道怎么做吗?谢谢 (2认同)

rch*_*ria 5

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

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

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