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

时间:2016-10-21 13:45:25

标签: php windows apache intl

在我安装的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
...

当我使用命令行测试它时:

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

报告扩展名已正确加载(输出:[1]),没有任何警告。

但是,如果我查看apache日志,我会看到以下错误:

  

PHP警告:PHP启动:无法加载动态库' D:/ devapps / php / ext \ php_intl.dll' - 找不到指定的模块。\ r \ n在第0行的未知中

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

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

你能帮助我吗?

2 个答案:

答案 0 :(得分:2)

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

  

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

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

答案 1 :(得分:0)

检查 php.ini extension_dir指令的值。

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