Windows下Xampp+Laravel环境PHP报‘XSLTProcessor类未找到’错误求助
问题场景
在Windows系统的XAMPP环境下开发Laravel项目时,使用XSLTProcessor类执行XML转换,出现错误:
local.ERROR: Class "XSLTProcessor" not found
错误触发代码行:
$proc = new XSLTProcessor;
已尝试的操作:
- 移除XAMPP目录php.ini中
extension=xsl行前的分号 - 通过XAMPP控制面板重启Apache
- 执行
php -i命令确认XSL扩展已启用 - 在PHP文件顶部添加
use XSLTProcessor;语句
核心业务代码:
// LOAD XML $xml = new DOMDocument('1.0', 'UTF-8'); $xml->load($xmlFile); // LOAD XSLT $xsl = new DOMDocument('1.0', 'UTF-8'); $xsl->load($pathToMyXSLFile); // INITIALIZE TRANSFORMER $proc = new XSLTProcessor; $proc->importStyleSheet($xsl); // PASS PARAMETER VALUES $proc->setParameter('', 'find-value', $findParam); $proc->setParameter('', 'replace-value', $replaceParam); // TRANSFORM SOURCE $new_xml = $proc->transformToDoc($xml);
排查与解决步骤
确认Apache加载的php.ini路径
很多人会修改错配置文件,在Laravel项目根目录新建临时文件info.php,内容如下:<?php phpinfo(); ?>访问该文件,找到
Loaded Configuration File项,复制路径,确保你修改的是这个路径下的php.ini文件,且其中extension=xsl行没有被注释。检查XSL扩展文件存在性
打开XAMPP的php/ext目录,确认存在php_xsl.dll文件。如果缺失,可从同版本的XAMPP安装包中拷贝该文件到ext目录。清理Laravel缓存
Laravel可能缓存了旧的扩展状态,执行以下命令清理:php artisan config:clear php artisan cache:clear验证PHP版本一致性
对比phpinfo()中显示的Apache PHP版本,和执行php -v得到的CLI PHP版本,确保两者完全一致。如果版本不同,说明你修改的是CLI的php.ini,而非Apache使用的配置文件。重启整个XAMPP服务
不要只重启Apache,关闭XAMPP所有服务(Apache、MySQL等),等待几秒后重新启动所有服务,确保配置修改完全生效。重置XAMPP配置(终极方案)
如果以上步骤都无效,备份项目后卸载当前XAMPP,下载对应版本的XAMPP重新安装,默认配置下XSL扩展是自带的,只需去掉extension=xsl前的分号即可。
内容的提问来源于stack exchange,提问作者John T

