2013-07-31 37 views
6

我一直在试图让我的测试工作站(PHP 5.5.1,Apache 2.2.4,Windows 7的32位)intl扩展工作。看来,无论我尝试什么,我都无法启动并运行。为什么Windows上的PHP不能看到扩展php_intl.dll,即使它存在?

  • 我已经在我的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在我的路径中。
  • 是的,我正在编辑的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即使我们显然在同一个目录中看不到?或者是我错过了的其他事情呢?

+0

这是与PHP匹配的版本DLL吗? –

+0

是的,它的版本是5.5.1。 – PerceptorII

回答

12

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

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

+0

这对我有用!!!只需将所有icu * .dll复制到apache bin文件夹即可。使用WAMP服务器与Apache 2.4.4,PHP 5.4.16 – gonzalezea

+1

我测试了这个手动安装Apache + PHP,它的工作!只要我看到你是对的,我从Apache24/bin中删除了这些文件,所以我预计'intl'将不会被再次识别,但它仍然有效,我想知道为什么... 知道真正的回答并让Apache识别这些'icu * .dll'文件而不复制它们。有人知道如何?谢谢 – Metafaniel

+0

在WAMP中工作,[wamp路径]/wamp/bin/php/php [版本号]/- 将所有icu * .dll文件复制到 - [wamp]/wamp/bin/apache/apache [版本号]/bin/ 谢谢! – JxAxMxIxN

3

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

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

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

+0

添加PHP安装的根目录为我解决了这个问题。无需移动.dll文件。 –

0

完整的修复方法是更改​​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', 
); 
0

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

(Windows 7的图形用户界面)

对于管理员获得 “环境变量:系统变量”,请按照指示在这里: https://kb.wisc.edu/cae/page.php?id=24500

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

  • 为我工作。
2

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

1)当我下载了我试图使用的扩展名时,它带有许多其他文件,除了.dll文件 - 其中大部分都是.pdb。我将它们全部移到包含.dll文件的ext文件夹中。

2)在作为注释here提供阿赖耶识点com smaines答案给了我,我需要做的第二件事 - 路径添加到ext文件夹到Windows $ PATH变量。

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

  • 转到我的电脑
  • 点击右键,选择属性
  • 点击左侧
  • 点击“高级系统设置”在顶部的'高级'选项卡上
  • 单击'环境变量'按钮
  • 搜索变量列表以找到'路径'变量,选择它
  • 单击'编辑...'按钮(当选择'路径'变量时)
  • 这将弹出另一个带有两个输入字段的对话框。最下面的是变量,选择它。
  • 追加到最后一个分号然后路径,在这种情况下,您将键入'; C:\ wamp \ php5.5 \ ext'(分号只是将它与前一个路径分开)
  • 单击'确定“在所有的对话框,都拿出来关闭它们

使上述需要重新启动计算机,供他们采取影响更改之后。

我希望帮助,它为我工作看起来这是一个相当普遍的问题 - 至少我发现了很多关于它和它的变体的讨论。

+0

将php目录(而不是ext目录)添加到PATH为我解决它。不需要重新启动,只需注销并重新登录即可。 – user2345998

0

更正上述消息

如果要添加PHP文件夹路径,确保添加PHP文件夹,而不是PHP/ext文件夹。

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

1

这让我疯狂。我有我所有的icu DLL在我的路径等。最后安装Visual C++ 2015 x86解决了我。

相关问题