如何定时保存phpinfo结果_自动记录phpinfo输出内容法【存档】

不能直接用 cron 执行 phpinfo() 保存 HTML,因 CLI 模式缺失 Web SAPI 环境,导致配置加载不全、$_SERVER 为空、输出非标准 HTML;正确做法是部署内网 phpinfo.php 并用 curl 定时抓取。

如何定时保存phpinfo结果_自动记录phpinfo输出内容法【存档】

不能直接用 cron 定时执行 phpinfo() 并保存 HTML——因为 phpinfo() 依赖完整的 PHP SAPI 环境(如 Web Server 的 headers、request context),命令行下运行会缺失大量模块信息或报错,且输出格式错乱。

为什么 php -r “phpinfo();” > info.html 不可靠

CLI 模式下的 phpinfo() 和 Web 模式差异极大:

  • 不加载 .htaccessphp_admin_value 类配置
  • 扩展加载状态可能不同(比如 opcache 在 CLI 默认关闭)
  • $_SERVER 变量为空或极简,导致“Loaded Configuration File”等字段显示为 no value
  • 输出是纯文本流,不是标准 HTML,浏览器打开后样式错乱、无折叠/搜索功能

正确做法:用 Web 环境 + curl 定时抓取

在服务器上部署一个仅限内网访问的 phpinfo.php,再用 cron 调用 curl 抓取其响应并保存。这是唯一能反映真实运行环境的方式。

操作步骤:

白瓜AI

白瓜AI

白瓜AI,一个免费图文AI创作工具,支持 AI 仿写,图文生成,敏感词检测,图片去水印等等。

下载

立即学习PHP免费学习笔记(深入)”;

  • phpinfo.php 放到 Web 可访问目录(如 /var/www/html/phpinfo.php),内容为:
  • 确保该文件无法被公网访问(Nginx/Apache 配置中限制 IP,或放在非 DocumentRoot 下并通过 alias 暴露)
  • 添加定时任务:
    0 3 * * * /usr/bin/curl -s http://localhost/phpinfo.php > /var/log/phpinfo_$(date +/%Y/%m/%d).html 2>/dev/null
  • 加个清理脚本(可选),避免日志无限膨胀:
    find /var/log -name "phpinfo_*.html" -mtime +30 -delete

进阶:自动比对配置变更

如果需要监控 PHP 配置是否被意外修改,可在保存的同时生成摘要:

  • curl 抓取后,用 grep 提取关键行生成简版快照:
    curl -s http://localhost/phpinfo.php | grep -E "(PHP Version|Loaded Configuration File|extension_dir|memory_limit|upload_max_filesize)" > /var/log/php_summary_$(date +/%Y/%m/%d).txt
  • 再用 diff 对比前后两天的 php_summary_*.txt,配合邮件通知(mail -s "PHP config changed" admin@example.com )
  • 注意:不要对完整 phpinfo()diff,HTML 中时间戳、进程 ID 等动态内容会导致误报

真正有效的存档,必须和线上环境同源同路径同权限。任何绕过 Web SAPI 的“简化方案”,最后查问题时都会少掉最关键的一块拼图。

https://www.php.cn/faq/1993963.html

发表回复

Your email address will not be published. Required fields are marked *