Nginx+Laravel站点无法访问及权限配置问题求助
Nginx+Laravel站点无法访问及权限配置问题求助
看起来你这是误操作全目录权限后引发的连锁权限问题,别慌,咱们一步步来排查修复:
一、先修正PHP-FPM的运行用户问题
你提到PHP8.1仍以root运行,这不仅安全风险极高,还会和Nginx的www-data权限直接冲突,必须先解决:
- 找到PHP8.1的FPM配置文件,常规路径是
/etc/php/8.1/fpm/pool.d/www.conf,如果是CloudPanel环境,可能是/etc/php/8.1/fpm/pool.d/cloudpanel.conf - 打开文件后,找到这两行配置:
修改为:user = root group = rootuser = dakaken group = dakaken - 同时确保监听套接字的权限配置正确:
listen.owner = www-data listen.group = www-data - 重启PHP-FPM服务生效:
systemctl restart php8.1-fpm
二、修复Laravel站点的完整权限链
Laravel对目录权限要求严格,尤其是存储和缓存目录,咱们逐一修正:
- 先给整个站点目录重置属主属组:
chown -R dakaken:dakaken /home/dakaken/你的站点目录 - 批量设置目录和文件的基础权限:
find /home/dakaken/你的站点目录 -type d -exec chmod 755 {} \; find /home/dakaken/你的站点目录 -type f -exec chmod 644 {} \; - 重点处理需要写入权限的核心目录:
更安全的方式是把这两个目录的属组改为chmod -R 775 /home/dakaken/你的站点目录/storage chmod -R 775 /home/dakaken/你的站点目录/bootstrap/cachewww-data(适配Nginx的运行用户):chgrp -R www-data /home/dakaken/你的站点目录/storage /home/dakaken/你的站点目录/bootstrap/cache
三、找回错误日志定位问题根源
找不到500错误日志就像盲人摸象,咱们先定位日志位置:
- Nginx错误日志默认路径是
/var/log/nginx/error.log,CloudPanel可能会给每个站点单独分配日志,比如/home/dakaken/你的站点目录/logs/nginx-error.log - PHP-FPM的错误日志可以在刚才修改的FPM配置文件里找
php_admin_value[error_log]项,默认可能是/var/log/php8.1-fpm.log - 如果还是找不到,直接在Nginx站点配置里强制指定日志路径:
在你的域名配置文件(比如/etc/nginx/sites-available/你的域名.conf)中添加:
重启Nginx生效:error_log /home/dakaken/你的站点目录/logs/nginx-error.log warn;systemctl restart nginx
四、解决CloudPanel部署的权限混乱问题
你提到用root重新部署后站点又挂了,说明部署过程中权限被再次篡改:
- 后续部署时,先切换到
dakaken用户操作:su - dakaken,再执行Laravel的部署命令(比如composer install、php artisan migrate等) - 检查CloudPanel的站点设置,确保站点关联的PHP运行用户是
dakaken,而非root
五、验证Nginx配置的正确性
最后确认Nginx的站点配置没有问题:
- 检查
root指令指向的站点目录是否正确 - 确认
fastcgi_pass指向的PHP-FPM套接字路径正确(一般是/run/php/php8.1-fpm.sock),同时验证套接字的权限:
正常应该显示属主为ls -l /run/php/php8.1-fpm.sockdakaken,属组为www-data
如果做完以上步骤仍有问题,把找到的错误日志内容贴出来,咱们再针对性排查!
备注:内容来源于stack exchange,提问作者Abdelrahman
相关产品推荐
相关产品推荐

