贝利信息

phpinfo输出含邮件配置吗_查mail相关参数途径【查邮】

日期:2026-01-20 00:00 / 作者:雪夜
不能直接看到完整邮件配置;phpinfo()仅显示mail.default_charset、sendmail_path及Windows下SMTP/smtp_port,不包含认证、TLS、超时等关键运行时参数,且Linux/macOS下SMTP设置基本无效。

phpinfo() 里能直接看到 mail() 配置吗

不能直接看到完整邮件配置。phpinfo() 会显示 mail.default_charsetsendmail_pathSMTP/smtp_port(仅限 Windows + php.ini 中启用 SMTP 模式时),但不会显示认证凭据、TLS 设置、超时等运行时关键参数。

尤其注意:sendmail_path 显示的是系统命令路径(如 /usr/sbin/sendmail -t -i),不代表 PHP 实际调用的 MTA 是否就绪;而 SMTP 值即使存在,也不代表 mail() 调用成功——它只在 PHP_SAPI === 'cli' && !defined('PHP_WINDOWS_VERSION_BUILD') 以外的场景下被忽略(Linux/macOS 下基本无效)。

查 sendmail_path 和 SMTP 的真实生效值

最可靠方式是读取当前生效的 php.ini 文件并 grep:

php --ini | grep "Loaded Configuration File"
php -r "echo ini_get('sendmail_path');"
php -r "echo ini_get('SMTP') ?: 'not set';"

php -r "echo ini_get('smtp_port') ?: 'not set';"

注意点:

验证 mail() 是否真能发信(不依赖 phpinfo)

光看配置没用,必须实测。最小验证脚本:

常见失败原因:

替代方案:绕过 phpinfo 查 Postfix/Exim/msmtp 真实状态

如果 mail() 失败,别只盯着 php.ini——直接查底层 MTA:

很多线上环境用 Docker + ssmtp/msmtp,但 phpinfo() 完全不体现这些外部工具链的状态——这才是排查“邮件发不出去”的真正起点。