目录执行权限(x)是Web服务器“进门”的必要条件,缺它会导致403错误;根目录推荐755,静态文件用644,上传目录须隔离并禁用脚本执行。
Web 服务器目录的执行权限(x)不是“让文件运行”,而是“让服务进门”——没有它,Nginx 或 Apache 连 index.html 都读不到,直接返回 403。
Linux 中,目录的 x 权限决定能否 cd 进入、能否访问其下的文件。Web 服务器加载 PHP、读取 CSS、解析 HTML,全依赖这个“进门权”。哪怕所有文件都是 644,只要父目录没 x,请求就失败。
PHP、HTML、JS、CSS 等不是可执行程序,它们由 Web 服务解释执行,自身不需要 x 权限。重点是确保 Web 进程能稳定读到内容。
chown 没配对,chmod 再准也没用。Web 进程(nginx/php-fpm)必须属于目录所属组,且该组拥有对应权限。
sudo chown -R deployer:www /var/www/example.com
ps aux | grep nginx 或 systemctl show nginx --property=UID
/uploads、/cache 这类允许写入的目录是高危区。即使设为 755,也得从机制上禁掉脚本执行。
location ~ ^/uploads/.*.(php|pl|py|jsp|sh|cgi)$ { return 403; }
<Directory "/var/www/uploads"> php_flag engine off </Directory>