OpenCart 3.0.4.0搭配PHP8.0出现SCSS编译错误,无法访问后台
OpenCart 3.0.4.0 + PHP 8.0 SASS编译错误解决
问题原因
- OpenCart 3.0.4.0默认集成的ScssPhp版本较低,该版本的
ScssPhp\ScssPhp\Compiler类没有compileString()方法——这个方法是ScssPhp 1.4.0及以上版本才新增的。刷新SASS缓存时触发了对该方法的调用,导致致命错误。 - 可能是主题修改、第三方扩展替换了ScssPhp文件,或者缓存生成的代码错误引用了新版本方法。
解决方法
方法1:修复SASS控制器代码
直接修改报错文件的方法调用,适配旧版ScssPhp:
- 打开
/Users/seb/Projects/shop/admin/controller/startup/sass.php - 定位到第17行,将
compileString()替换为旧版支持的compile():
// 替换前 $css = $compiler->compileString($scss)->getCss(); // 替换后 $css = $compiler->compile($scss);
- 保存文件后,尝试重新访问管理后台。
方法2:更新ScssPhp到兼容版本
升级ScssPhp到同时支持PHP 8.0和OpenCart 3.0.4.0的版本:
- 下载ScssPhp 1.12.x ~ 1.15.x版本(该区间版本兼容PHP 8.0且适配OpenCart 3.x)
- 备份原
system/library/scssphp目录,然后将下载的ScssPhp文件替换到该目录 - 删除
system/storage/cache/下的所有缓存文件(保留.htaccess文件) - 重启PHP服务后访问后台。
方法3:临时禁用SASS编译(快速恢复后台)
若需紧急恢复后台访问,可临时关闭SASS自动编译:
- 打开
system/storage/modification/system/engine/router.php(未启用OCMod则打开system/engine/router.php) - 找到调用
ControllerStartupSass的代码段,注释或删除该行 - 清除缓存后即可访问后台,后续再处理SASS编译问题。
内容的提问来源于stack exchange,提问作者Seb Rose
相关产品推荐
相关产品推荐

