修复php日志泄露漏洞需三步:关闭app_debug调试模式,清空runtime/log下所有历史日志文件,配置web服务器禁止直接访问/runtime/目录及.log、.php文件。

修复PHP日志泄露敏感信息漏洞,核心是切断“日志生成→存储→可访问”这条攻击链。不靠打补丁,而要立即控制调试行为、清除已有风险、封死目录入口。
关闭调试模式,停止敏感日志输出
ThinkPHP 3.2/5.x/6.x 均依赖 APP_DEBUG 控制日志详细程度。只要为 true,所有 SQL、POST 数据、错误堆栈、数据库配置都会明文写入日志。
- 检查
config/app.php(TP5/6)或Conf/config.php(TP3.2),将'debug' => true或'APP_DEBUG' => true改为false - 搜索项目中是否硬编码了
define('APP_DEBUG', true)(尤其在public/index.php),必须删除或改为false - 若使用
.env文件,确认其中无APP_DEBUG=true—— 它会覆盖配置文件,上线前务必注释或删除
清空历史日志,避免已被爬取的内容继续暴露
攻击者常批量扫描 /runtime/log/202610/22.log 这类路径。即使已关 DEBUG,旧日志仍含密码、SQL、session_id 等,必须彻底清理。
- 进入服务器
runtime/log/目录(TP5/6 默认路径;TP3.2 多为Runtime/Logs/) - 递归删除所有子目录及其中全部
.log文件(不是只删空目录) - Linux 下可执行:
rm -rf runtime/log/*;Windows 请手动清空或用脚本
禁止 Web 直接访问日志目录
仅删日志不够。只要目录还能被浏览器打开或列目录,新日志一生成就会再次暴露。
-
Nginx:在站点 server 块中添加
location ^~/runtime/ { deny all; }
或更精确地屏蔽日志与 PHP 文件:location ~ ^/runtime/.*\.(log|php)$ { deny all; } -
Apache:在
public/.htaccess或虚拟主机配置中加入<directory><br> Require all denied<br></directory>
- 验证方式:浏览器访问
https://yoursite.com/runtime/log/202610/22.log,应返回 403 Forbidden 或 404 Not Found
加固运行时目录权限与日志内容
防复发不能只靠配置,还要限制系统级读写和过滤记录字段。
- 给
runtime/目录设权限:Linux 下执行chmod 750 runtime,确保 Web 用户(如 www-data)只能写入,不可读取或执行 - 在日志配置中禁用高危字段记录:TP5/6 可修改
app.php中的'log' => ['record' => false],或自定义日志驱动,主动过滤 SQL、POST、$_SERVER 等敏感变量 - 检查是否误将
database.php或.env放在 Web 可访问路径下,应移出 public 目录,并通过绝对路径加载
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











