mail.add_x_header 默认为 Off,需在 php.ini 中设为 Off 并重启服务;不可用 ini_set() 修改;CLI 可用 -d 参数临时覆盖;验证可用 ini_get() 或查邮件头。

mail.add_x_header 是 PHP 的一个配置指令,用于控制是否在通过 mail() 函数发送的邮件头中自动添加 X-PHP-Originating-Script 这一行(含执行脚本的 UID 和文件路径),主要作用是辅助调试和安全审计。
在 PHP 8.6 中,该指令默认为 Off(即不添加),但若你发现它仍被启用,或想显式关闭,有以下几种可靠方式:
直接在 php.ini 中禁用
找到你的 php.ini 文件(可通过 php --ini 或 phpinfo() 确认路径),添加或修改这一行:
mail.add_x_header = Off
✅ 保存后重启 Web 服务器(如 Apache/Nginx)或 PHP-FPM 进程,使配置生效。
立即学习“PHP免费学习笔记(深入)”;
运行时临时禁用(不推荐用于生产)
该指令是 PHP_INI_SYSTEM 级别,意味着不能用 ini_set() 在脚本中动态修改。以下写法无效:
ini_set('mail.add_x_header', '0'); // ❌ 无效果,会静默失败所以运行时无法干预,必须靠配置文件或启动参数。
PHP 8.5.12 RC 1 候选版修复 BZ2、DOM、PDO、Opcache/JIT 和扩展内存安全问题,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
通过命令行参数(仅限 CLI 场景)
如果通过 php -d 执行脚本,可临时覆盖:
php -d mail.add_x_header=Off script.php
但这对 Web 请求无效。
验证是否已关闭
可在脚本中检查当前值:
var_dump(ini_get('mail.add_x_header')); // 输出 "0" 或 "" 表示关闭,"1" 表示开启或直接发一封测试邮件,用邮件客户端查看原始信头,确认没有 X-PHP-Originating-Script: 行。
注意:关闭 mail.add_x_header 不影响邮件发送功能,仅移除调试信息;某些安全策略(如内部审计要求)可能反而需要它开启,按需权衡。
不复杂但容易忽略。


















