如何在Apache服务器中正确启用PHP intl扩展?
Apache环境下PHP intl扩展无法加载的问题排查与解决
问题描述
- 已在
php.ini中启用extension=intl(移除原;extension=php_intl.dll前的分号) - 命令行执行
php -m时,intl扩展显示正常加载 - Apache运行的网站通过
<?php phpinfo(); ?>查看时,intl扩展未加载,但mbstring扩展在两种环境下均正常显示 - 环境信息:
- 操作系统:Windows 10
- Apache:httpd-2.4.54-o111s-x64-vs16
- PHP:php-8.2.0-Win32-vs16-x64
已尝试操作
- 将
php_intl.dll复制到Apache24/bin或Windows/SysWOW64目录 - 重新安装Visual C++ 2019 Redistributable
- 重新检查
httpd.conf和php.ini配置
相关配置
httpd.conf
LoadModule php_module modules/php-8.2.0-Win32-vs16-x64/php8apache2_4.dll AddType application/x-httpd-php .php .html .htm PHPIniDir "C:/Program Files/Apache Software Foundation/Apache24/modules/php-8.2.0-Win32-vs16-x64/"
php.ini
extension=intl
解决步骤
确认Apache加载的php.ini文件
访问网站的phpinfo()页面,找到「Loaded Configuration File」项,核对Apache实际加载的php.ini是否为你修改的版本——命令行和Apache可能加载不同路径的配置文件,这是常见诱因。补全intl扩展的依赖DLL
PHP的intl扩展除了php_intl.dll,还依赖PHP安装目录下的一系列icu开头的DLL文件(如icuuc72.dll、icuin72.dll、icuio72.dll等)。- 把这些
icu开头的DLL文件复制到Apache24/bin目录; - 或者将PHP安装根目录添加到系统环境变量
PATH中,添加后需重启Apache和所有命令行窗口。
- 把这些
验证架构匹配性
再次确认httpd.conf中LoadModule指向的php8apache2_4.dll是x64版本,与你的Apache(x64)、PHP(x64)架构完全一致。彻底重启Apache服务
修改配置或复制文件后,必须完全停止再重启Apache,不能仅刷新网页。可通过Windows服务管理器操作,或执行命令:net stop Apache2.4 net start Apache2.4查看Apache错误日志定位问题
若以上步骤无效,打开Apache24/logs/error.log,日志会记录扩展加载失败的具体原因(如缺少某依赖DLL),根据提示针对性修复。
内容的提问来源于stack exchange,提问作者R.X.
相关产品推荐
相关产品推荐

