755是目录标准权限,表示所有者读写执行、组和其他用户仅读执行;它确保可进入目录,但写入依赖属主为php进程用户,而非权限数字本身。

ThinkPHP 在 Linux 服务器上运行时,755 是目录的标准权限设置,但它不是万能解药——设对了权限却仍报 Permission denied,往往是因为只改了权限,没管属主、没查路径层级、也没考虑 SELinux 或 open_basedir 等隐藏限制。
755 对 ThinkPHP 目录意味着什么
- 第一位
7:所有者(如www-data)有读(r)、写(w)、执行(x)权限 - 中间
5:所属组有读(r)、执行(x),但无写权限 - 末位
5:其他用户同样只有读+执行,不可写
所以755适合目录本身(必须含x才能进入),但不直接赋予写入能力;真正需要写入的子目录(如runtime/,log/,cache/),得靠“属主是 PHP 进程用户”来获得写权,而不是靠放大权限数字。
哪些目录该设 755,怎么设才有效
-
runtime/及其全部子目录(log/,cache/,temp/等)必须为 755 -
public/、app/、config/等代码目录也推荐 755(确保 Web 服务能遍历加载) - 不要对
.env、config/database.php等敏感文件设 755——它们应为644,且属主是www-data或nginx
关键操作不是 chmod,而是三步闭环
- 查 PHP 实际用户:
ps aux | grep php-fpm | grep -v grep | awk '{print $1}'(常见为www-data、nginx或apache) - 统一属主:
sudo chown -R www-data:www-data /var/www/html/runtime - 再设权限:
find /var/www/html/runtime -type d -exec chmod 755 {} \;find /var/www/html/runtime -type f -exec chmod 644 {} \;
为什么只 chmod 755 还是失败?常见卡点
-
/var/www/html这一级目录权限是750,而www-data不在对应用户组里 → 进不去 -
runtime/下某个子目录被脚本重建,属主变回root→ 权限继承失效 - CentOS/RHEL 启用 SELinux,
runtime/缺少httpd_sys_rw_content_t上下文 →avc: denied { write }出现在/var/log/audit/audit.log - 宝塔或 Docker 环境中,挂载卷 UID 不匹配,
chown在容器内无效
Windows 下别套用 755
- 没有
x权限概念,重点是右键 → 属性 → 安全 → 给当前运行 Apache/PHP 的用户(如IIS_IUSRS或你自己的账户)勾选“修改”和“写入” - 取消“只读”属性,并应用到所有子对象
不复杂但容易忽略。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











