PHP环境部署必须严格区分权限:目录用755(确保Web服务器可遍历),文件用644(禁用执行更安全),上传目录需设755并限制文件为644,敏感配置文件应设600。

PHP环境部署时,文件和目录权限配错会导致网站打不开、上传失败或被黑客利用写入恶意脚本,必须按类型严格区分755与644的使用场景。
先搞懂755和644到底差在哪
区别不在数字大小,而在【执行位x是否开启】——这对目录和文件意义完全不同。
755 = rwxr-xr-x:所有者可读写执行,组和其他人可读、可进入(目录)或可执行(文件);
644 = rw-r--r--:所有者可读写,组和其他人只能读,【没有执行权限】。
立即学习“PHP免费学习笔记(深入)”;
目录必须有x权限才能被Web服务器遍历,否则报403 Forbidden;而PHP脚本文件本身由解释器执行,不需要x权限,设644更安全。
网站根目录及子目录该用755还是644
目录一律用755,包括/var/www/html、public、runtime、uploads等所有文件夹。
执行命令:sudo chmod -R 755 /var/www/html
注意:-R会递归修改所有子项,如果目录里混着PHP文件,它们也会被加上x权限——这不安全,后续需单独修复文件权限。
PHP文件、CSS、JS、图片等静态资源该用哪种权限
所有非目录项(.php、.css、.js、.jpg等)统一设为644。
方法一:单个文件设置chmod 644 index.php
方法二:批量处理当前目录下所有PHP文件find . -name "*.php" -type f -exec chmod 644 {} \;
方法三:递归设置整个项目中所有普通文件(跳过目录)find /var/www/html -type f -exec chmod 644 {} \;
上传目录和缓存目录的特殊处理
第一步:确认Web服务器运行用户(如Nginx常用www-data,Apache常用apache或daemon)
第二步:将上传目录(如uploads、runtime)属主设为该用户sudo chown -R www-data:www-data /var/www/html/uploads
第三步:设目录权限为755(确保Web进程可写)sudo find /var/www/html/uploads -type d -exec chmod 755 {} \;
第四步:设目录内已有文件权限为644(防止上传的PHP文件被直接执行)sudo find /var/www/html/uploads -type f -exec chmod 644 {} \;
这一步漏掉,攻击者上传shell.php后能直接通过URL访问执行,【755目录+未限制文件权限=高危漏洞】。
敏感配置文件必须额外加固
.env、config.php、database.php这类含数据库密码的文件,不能只靠644。
应设为600:chmod 600 .env
600表示只有所有者可读写,连同组用户和其他人都无任何权限,避免被Web路径直接下载泄露。



















