运行php spark serve提示FILTER_SANITIZE_STRING已弃用如何解决
php spark serve启动失败提示FILTER_SANITIZE_STRING is deprecated解决方法 报错原因
这个报错是因为本地运行的PHP版本≥8.1,但当前项目使用的CodeIgniter4框架版本低于v4.2.0。PHP从8.1版本开始正式废弃FILTER_SANITIZE_STRING常量,旧版框架内部调用这个常量做输入过滤时,就会抛出废弃级别错误,阻断启动流程。
报错参考截图:
解决方法
- 推荐方案:升级CodeIgniter4到最新稳定版
官方从v4.2.0版本开始就已经完全移除了对这个废弃常量的调用,原生兼容PHP8.1及以上版本。进入项目根目录执行composer更新命令即可:composer update codeigniter4/framework
更新完成后重新运行php spark serve就能正常启动开发服务。 - 临时方案(暂时无法升级框架时使用):修改PHP配置屏蔽废弃报错
找到当前PHP环境对应的php.ini配置文件,搜索error_reporting配置项,修改为如下规则,屏蔽E_DEPRECATED级别的报错提示:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
保存配置后重启PHP环境,再执行启动命令即可正常运行。注意这个方法只是隐藏报错,没有从代码层面解决兼容问题,只适合临时调试用,后续还是建议升级框架。 - 应急方案(不推荐长期使用):直接修改框架核心代码替换常量
全局搜索项目代码里调用FILTER_SANITIZE_STRING的位置,一般在system/HTTP/目录下的请求处理类文件中,把这个常量替换成等效的字符串过滤逻辑,比如用htmlspecialchars()做转义处理,或者换成FILTER_UNSAFE_RAW配合自定义输入过滤规则。注意直接修改框架核心文件会在后续框架更新时被覆盖,只适合紧急救急场景使用。
内容的提问来源于stack exchange,提问作者Fajar Agung
相关产品推荐
相关产品推荐

