PHPStan中scanFiles/scanDirectories未解决函数未找到错误的排查
解决PHPStan提示set_magic_quotes_runtime未找到的问题
核心原因
set_magic_quotes_runtime是PHP 4/5的内置函数,PHP 7.0及以上版本已彻底移除。PHPStan默认会根据你配置的targetPhpVersion校验函数合法性,而scanFiles/scanDirectories仅用于扫描用户代码中定义的类、函数,无法让PHPStan识别已被废弃的PHP内置函数。
具体解决方案
根据你的项目环境选择对应方案:
方案1:匹配项目实际PHP版本
如果项目仍运行在PHP 5.x环境,在phpstan.neon(或phpstan.neon.dist)中明确设置目标PHP版本:parameters: targetPhpVersion: 5.6这样PHPStan会基于PHP 5.6的函数列表校验,不会再报错。
方案2:修改FPDF代码(推荐,若项目已升级到PHP 7+)
由于PHP 7+已移除magic quotes相关功能,set_magic_quotes_runtime调用完全无意义,直接修改fpdf.php第1055行:// 注释或删除该行 // set_magic_quotes_runtime(0);方案3:添加函数存根(无需修改代码或调整PHP版本)
在项目中创建存根文件(比如stubs/deprecated_functions.php),声明该函数存在:<?php /** * @deprecated PHP 7.0+ 已移除 */ function set_magic_quotes_runtime($new_setting): bool { return true; }然后在PHPStan配置中引入该存根:
parameters: bootstrapFiles: - stubs/deprecated_functions.php
内容的提问来源于stack exchange,提问作者Sbraaa
相关产品推荐
相关产品推荐

