php_intl.dll在使用php5apache2_4.dll时无法正常工作

在我安装的Windows 7 64bit上:

  • Apache 2.4.23 x86 VC11线程安全
  • php 5.6.27-Win32-VC11-x86

Apache httpd.conf:

... LoadModule php5_module "D:/devapps/php/php5apache2_4.dll" AddHandler application/x-httpd-php .php PHPIniDir "D:/devapps/php" ... 

一切工作正常,用phpInfo()我看到加载的PHP.ini是正确的(PHPIniDir)和扩展intl被启用:

的php.ini

 ... extension_dir = "D:/devapps/php/ext" ... extension=php_intl.dll ... 

当我用命令行testing它时:

 php.exe -c \devapps\php -r "echo '[' . extension_loaded('intl') . ']';" 

它会报告扩展已正确加载(输出:[1]),而不会有任何警告。

但是,如果我看看Apache日志,我看到以下错误:

PHP警告:PHP启动:无法加载dynamic库'D:/ devapps / php / ext \ php_intl.dll' – 无法find指定的模块。

并通过web服务器extension_loaded('intl')为false。

其他扩展(如肥皂或curl)工作正常。

你可以帮我吗?

    我做了一些测试:在将icuuc57.dll,icuin57.dll,icuio57.dll复制到Apache bin目录后,PHP警告消失,并且intl扩展通过Web服务器正常工作。

    所以我解决了一个更好的方式,包括系统%PATH%变量(我有不同版本的PHP,所以我没有设置它)的D:\ devapps \ php。

    看来apache无法获取并加载这些DLL,即使它们位于php5apache2_4.dll的相同目录下

    检查你的php.ini中的extension_dir指令的值。

    如果只是ext ,请尝试将其更改为绝对路径,例如D:/ devapps / php / ext (如果这是正确的路径)。