【问题标题】:php_intl.dll not working when using php5apache2_4.dll使用 php5apache2_4.dll 时 php_intl.dll 不起作用
【发布时间】:2017-03-03 20:43:14
【问题描述】:

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

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

你能帮帮我吗?

【问题讨论】:

    标签: php windows apache intl


    【解决方案1】:

    检查 php.iniextension_dir 指令的值。

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

    【讨论】:

    • 已经设置了绝对路径(我更新了问题)
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多