ThinkPHP 6.0 静态缓存文件默认存于 HTML_PATH 指定路径(如 public/html/),非 runtime/cache,需单独设置属主(如 deploy)、属组(如 www-data)及目录权限 750、文件权限 640,并在 config/app.php 中启用 HTML_CACHE_ON 及配置规则。

确认静态缓存实际存放路径
先检查 config/app.php 中是否设置了 'HTML_PATH' => public_path() . 'static/html/'(或类似路径)。若未设置,默认值为 public_path() . 'html/'。务必用 public_path() 而非 app()->getRootPath(),否则路径会错位,导致写入失败。
执行以下命令验证路径是否存在且可被 Web 进程访问:
php -r "echo \think\facade\App::publicPath() . '/html/';"静态缓存目录需满足的权限条件
Web 服务器进程(如 www-data、apache)必须能:
✅ 创建目录(若不存在)
✅ 写入 HTML 文件
✅ 遍历父级路径(如 public/static/)
❌ 不需要执行权限(HTML 文件本身不可执行)
- 目录权限建议设为 750(所有者可读写执行,组可读执行,其他无权)
- 生成的 HTML 文件权限自动为 640(所有者可读写,组可读,其他无权)
- 目录属主应为部署用户(如 deploy),属组必须包含 Web 进程组(如 www-data)
一键修复权限的命令组合
假设你使用 Ubuntu + Nginx + PHP-FPM,静态缓存路径为 public/html/:
立即学习“PHP免费学习笔记(深入)”;
- 确保目录存在:
mkdir -p public/html - 统一属主属组:
sudo chown -R deploy:www-data public/html - 设目录权限:
sudo chmod -R 750 public/html - 清理已有缓存(避免旧文件权限残留):
sudo rm -f public/html/* - 验证 Web 进程能否写入:
sudo -u www-data touch public/html/test.tmp && sudo -u www-data rm public/html/test.tmp
配合配置启用静态缓存
仅设对权限还不够,需在 config/app.php 中显式开启并指定规则:
'HTML_CACHE_ON' => true'HTML_PATH' => public_path() . 'html/''HTML_CACHE_RULES' => ['Index:index' => ['{:module}_{:controller}_{:action}', 3600]]
注意:规则中路径格式要与路由实际 URL 一致;缓存有效期单位为秒,设为 0 表示永久,但不推荐线上使用。



















