Laravel Sanctum生产环境服务器无法正常工作求助
Laravel Sanctum生产环境异常排查与修复方案
环境配置检查
- 确认
.env文件中APP_URL为生产服务器的正确域名,必须带完整协议(如https://your-production-domain.com) - 检查
SESSION_DOMAIN设置,生产环境需设为顶级域名格式(如.your-domain.com),保证跨域Cookie正常生效 - 确保
SANCTUM_STATEFUL_DOMAINS包含生产域名,格式示例:SANCTUM_STATEFUL_DOMAINS=your-production-domain.com,www.your-production-domain.com
文件权限与配置验证
- 修复
storage和bootstrap/cache目录权限,确保服务器进程(如www-data、nginx)拥有读写权限:chmod -R 755 storage bootstrap/cache chown -R www-data:www-data storage bootstrap/cache - 确认
config/sanctum.php配置文件已完整部署,无本地修改项遗漏
路由与中间件检查
- 验证
routes/api.php中是否正确使用auth:sanctum中间件,示例:Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user(); }); - 检查
app/Http/Kernel.php的api中间件组,确认已注册Sanctum中间件:\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class
Session与Cookie配置
- 生产环境建议将
SESSION_DRIVER设为redis或database,避免使用file驱动(易引发权限问题) - 若使用HTTPS,需将
SESSION_SECURE_COOKIE设为true,SESSION_SAME_SITE根据跨域需求设为lax或none
数据库与缓存操作
- 强制执行数据库迁移,确保Sanctum所需表已创建:
php artisan migrate --force - 清理并重新生成缓存:
php artisan cache:clear php artisan config:clear php artisan route:cache - 若使用Redis,验证
.env中REDIS_HOST、REDIS_PASSWORD等连接配置正确
日志与版本排查
- 查看
storage/logs/laravel.log日志文件,定位具体错误(如Token验证失败、Cookie读取异常等) - 确认生产服务器PHP版本与本地/测试环境一致(如Laravel 10要求PHP 8.1+)
- 检查
config/cors.php配置,确保allowed_origins包含生产前端域名,supports_credentials设为true
内容的提问来源于stack exchange,提问作者Amit Sharma
相关产品推荐
相关产品推荐

