You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP mail函数未添加X-PHP-Script头的问题咨询

问题解答

1. PHP 8.x 中X-PHP-Script头的变化

从PHP 7.4开始,官方弃用了X-PHP-Script头,转而用X-PHP-Originating-Script替代。你记忆中“PHP mail默认添加X-PHP-Script”是PHP 7.3及更早版本的行为,新版本已移除该头的自动生成逻辑——哪怕开启mail.add_x_header = On,也只会生成格式为X-PHP-Originating-Script: UID:文件名的头。

若要自动添加X-PHP-Script,推荐两种方案:

  • 封装自定义邮件函数:在项目中替代原生mail(),自动拼接目标头信息,示例代码:
function custom_mail($to, $subject, $message, $headers = '', $parameters = '') {
    $server_name = $_SERVER['SERVER_NAME'] ?? 'unknown-server';
    $php_self = $_SERVER['PHP_SELF'] ?? 'unknown-script';
    $remote_addr = $_SERVER['REMOTE_ADDR'] ?? 'unknown-addr';
    $x_script_header = "X-PHP-Script: $server_name$php_self for $remote_addr\r\n";
    
    // 合并原有头信息
    $headers = empty($headers) ? $x_script_header : $headers . "\r\n" . $x_script_header;
    
    return mail($to, $subject, $message, $headers, $parameters);
}

后续项目统一调用custom_mail()即可,无需修改php.ini。

  • 修改PHP源码编译(不推荐):找到PHP mail函数源码文件ext/standard/mail.c,手动添加X-PHP-Script头的生成逻辑后重新编译PHP。此方法维护成本高,仅适合有定制化需求的场景。

2. cPanel共享服务器上X-PHP-Script的来源

在cPanel环境中,这个头并非PHP原生添加,而是由cPanel集成的Exim邮件服务器过滤规则或cPanel定制的PHPMailer补丁注入的。cPanel为兼容旧版应用需求,在邮件投递流程中额外添加了该头信息,属于平台对PHP和邮件服务的定制化修改,并非PHP官方行为。


内容的提问来源于stack exchange,提问作者vvkatwss vvkatwss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:10:30