thinkphp这个CMS做的网站,设置全站禁止写入后,网站无法打开
时间:26-05-12 12:56:35 作者:A18703886388点击:次
你把全站设为 “禁止写入” 后网站打不开, 是因为 ThinkPHP 必须往 runtime(缓存 / 日志 / 模板编译)目录写文件,一旦整个网站都只读,PHP 一运行就报 Permission denied,直接白屏 / 500 。 一、为什么会这样(
你把全站设为 “禁止写入” 后网站打不开,是因为 ThinkPHP 必须往 runtime(缓存 / 日志 / 模板编译)目录写文件,一旦整个网站都只读,PHP 一运行就报 Permission denied,直接白屏 / 500。
一、为什么会这样(一句话)
ThinkPHP 每次运行都会:
-
在
runtime/cache 生成缓存
-
在
runtime/log 写日志
-
在
runtime/temp 生成编译模板
这些都需要写权限;你把全站(包括 runtime)设为只读,PHP 直接报错退出,网站打不开。
二、正确做法:代码只读,运行目录可写
不要 “全站禁止写入”,要分开设置(以宝塔面板为例):
-
网站根目录(如 /www/yourdomain)
-
必须单独放开以下目录为 “可写”
-
runtime(核心,必须可写)
-
public/uploads(上传目录)
-
logs(如有独立日志目录)
三、紧急修复步骤(立刻恢复访问)
1. 面板操作(宝塔)
-
网站 → 根目录 → 右键 取消全站禁止写入
-
再右键根目录 → 设置权限 → 禁止写入(仅根目录)
-
进入
runtime → 右键 → 取消禁止写入(设为可写)
-
同理:
public/uploads 设为可写
2. 命令行(Linux)
四、验证是否正常
-
访问网站:不再白屏 / 500
-
检查
runtime/log/日期.log:有新日志生成 → 写入正常
五、安全建议
-
不要用 777:风险高,且部分环境会拦截
-
定期清理 runtime 缓存:避免文件过多
-
上传目录禁止执行 PHP:防止 webshell 运行
六、总结
-
❌ 全站禁止写入:ThinkPHP 无法运行(runtime 不可写)
-
✅ 根目录只读 + runtime/uploads 可写:安全又正常
|