PHP 8.3 移除了 track_errors 指令且严格校验配置,php.ini 中残留 track_errors=On/Off 会导致 Fatal error;需删除或注释该行,并清理 register_globals 等过期指令,重启服务后验证 php -v 正常执行。

小皮面板(phpStudy)升级到 PHP 8.3 后提示 track_errors 指令不可用,是因为该指令早在 PHP 8.0 就被彻底移除,而 PHP 8.3 执行更严格的配置校验——只要 php.ini 中还存在 track_errors=On 或 track_errors=Off 这类行,就会直接报致命错误,连 php -v 都无法执行。
确认并定位问题配置项
该错误通常表现为:
Fatal error: Directive 'track_errors' is no longer available in PHP in Unknown on line 0- 小皮面板里 PHP 服务启动失败、站点打不开、或 CLI 下运行
php -v报错退出
原因不是你代码用了它,而是 php.ini 文件里残留了这行配置。小皮面板的 PHP 配置文件路径一般为:
C:\phpstudy_pro\Extensions\php\php8.3.0-nts\php.ini(具体以你安装时选择的版本和架构为准,注意区分 nts/ts 版本)
快速修复步骤
打开对应 php.ini 文件,用 Ctrl+F 搜索 track_errors,找到类似这一行:
然后做以下任一操作(推荐第1种):
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
- 直接删除整行(最干净,无残留风险)
- 或改为注释掉:在行首加英文分号
;,变成;track_errors = On - 不要保留
track_errors = Off——PHP 8.3 不接受该指令任何形式的存在
检查是否还有其他过期指令
PHP 8.3 对废弃指令更敏感,顺手检查并清理以下常见“老配置”也很有必要:
-
register_globals(PHP 5.4+ 已移除) -
magic_quotes_gpc(PHP 5.4+ 已移除) -
session.hash_function和session.hash_bits_per_character(PHP 7.1+ 废弃,8.0+ 移除) -
mysql.default_port等 mysql_* 相关遗留项(PHP 7.0+ 移除)
这些若存在,同样可能引发启动失败或警告,一并删掉或注释即可。
重启服务并验证
保存 php.ini 后,必须在小皮面板中:
- 点击右上角「软件管理」→ 找到 PHP 8.3 → 点击「重启」
- 或直接点顶部「重启所有服务」(确保 PHP-FPM 和 Web 服务都重载)
验证是否生效:
- 命令行执行
php -v,应正常输出版本信息,不再报错 - 访问
http://localhost/phpinfo.php(如有),搜索track_errors,确认结果为空
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










