1. 更改项目所有权至Web服务器用户
Debian系统中,Apache/Nginx默认以www-data用户运行。将Laravel项目所有权赋予该用户,确保Web服务器有权访问文件:
sudo chown -R www-data:www-data /path/to/your/laravel/project
2. 设置合理的目录与文件权限
storage、bootstrap/cache等需要写入的目录需放宽至775(避免过度授权):sudo find /path/to/your/laravel/project -type d -exec chmod 755 {} \; # 所有目录设为755
sudo chmod -R 775 /path/to/your/laravel/project/storage # 存储目录设为775
sudo chmod -R 775 /path/to/your/laravel/project/bootstrap/cache # 缓存目录设为775
.env文件(含敏感信息)需严格限制为600(仅所有者可读写):sudo find /path/to/your/laravel/project -type f -exec chmod 644 {} \; # 所有文件设为644
sudo chmod 600 /path/to/your/laravel/project/.env # .env文件设为600
3. 处理SELinux上下文(若启用)
若系统启用了SELinux,需调整安全上下文,允许Web服务器访问项目文件:
sudo chcon -R -t httpd_sys_content_t /path/to/your/laravel/project # 项目内容设为httpd可读
sudo chcon -R -t httpd_sys_rw_content_t /path/to/your/laravel/project/storage # 存储目录设为可读写
sudo chcon -R -t httpd_sys_rw_content_t /path/to/your/laravel/project/bootstrap/cache # 缓存目录设为可读写
4. 验证Web服务器配置
DocumentRoot指向Laravel的public目录,且允许访问必要路径:<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot /path/to/your/laravel/project/public
<Directory /path/to/your/laravel/project/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<Directory /path/to/your/laravel/project/storage>
Require all granted
</Directory>
<Directory /path/to/your/laravel/project/bootstrap/cache>
Require all granted
</Directory>
</VirtualHost>
fastcgi_pass指向PHP-FPM套接字,确保try_files指令正确转发请求:server {
listen 80;
server_name yourdomain.com;
root /path/to/your/laravel/project/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 根据PHP版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
5. 重启Web服务与PHP-FPM
应用权限变更后,重启Web服务器及PHP-FPM服务以生效:
sudo systemctl restart apache2 # 若使用Apache
sudo systemctl restart nginx # 若使用Nginx
sudo systemctl restart php8.2-fpm # 根据实际PHP版本调整
6. 检查Laravel日志排查残留问题
若仍存在权限错误,查看Laravel日志获取具体信息:
tail -f /path/to/your/laravel/project/storage/logs/laravel.log
以上步骤覆盖了Debian系统下Laravel权限问题的核心解决方案,需根据实际环境调整路径与用户组(如自定义Web服务器用户)。务必避免使用chmod -R 777等过度授权命令,以防安全风险。