You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony6+EasyAdmin4生产环境出现406错误,无法执行增删改操作

问题描述

将项目部署至生产环境后,无法执行创建、编辑和删除操作,操作后会自动跳转至后台仪表盘,浏览器控制台日志显示406 (Not Acceptable)错误。本地开发环境下无此问题,当前使用EasyAdmin 4.4与Symfony 6.0版本,相关DashboardController代码如下:

<?php

namespace App\Controller\Admin;


use App\Entity\User;
use App\Entity\Skills;
use App\Entity\Project;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route; 
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
use EasyCorp\Bundle\EasyAdminBundle\Provider\AdminContextProvider;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;

class DashboardController extends AbstractDashboardController
{

    private $adminContextProvider;

    public function __construct(AdminContextProvider $adminContextProvider)
    {
        $this->adminContextProvider = $adminContextProvider;
    }

    #[Route('/admin', name: 'admin')]
    public function index(): Response
    {
        return $this->render('admin/dashboard.html.twig');
    }


    public function configureDashboard(): Dashboard
    {
        return Dashboard::new()
            ->setTitle('My Project');
    }


    public function configureMenuItems(): iterable
    {
        yield MenuItem::linktoRoute('Back to the website', 'fa-solid fa-rotate-left', 'app_home');
        yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');
        yield MenuItem::linkToCrud('Profil', 'fas fa-user', User::class);
        yield MenuItem::linkToCrud('Projects', 'fas fa-list', Project::class);
        yield MenuItem::linkToCrud('Skills', 'fa-solid fa-gears', Skills::class);
    }
}
可能的原因与解决方案
  • 请求头Accept配置异常:生产环境服务器(Nginx/Apache)可能强制修改了请求的Accept头,导致EasyAdmin的AJAX请求响应格式不被客户端接受。检查服务器配置,确保未篡改请求头;或在EasyAdmin的CRUD配置中明确指定响应格式。
  • CSRF令牌验证失败:生产环境下会话Cookie配置(如cookie_secure)可能与本地不一致,导致CSRF令牌不匹配触发406错误。检查config/packages/framework.yaml中的session配置,确保生产环境下cookie_secure设置符合HTTPS环境要求,同时清除浏览器缓存与服务器缓存。
  • 自定义Dashboard路由冲突:当前DashboardController的index方法返回自定义模板,可能干扰EasyAdmin默认的CRUD路由处理逻辑。尝试替换为默认的Dashboard跳转逻辑:
#[Route('/admin', name: 'admin')]
public function index(): Response
{
    $adminUrlGenerator = $this->container->get(AdminUrlGenerator::class);
    // 跳转到任意一个CRUD页面,示例为User实体
    return $this->redirect($adminUrlGenerator->setController(UserCrudController::class)->generateUrl());
}
  • 生产环境缓存未更新:Symfony生产环境缓存可能未正确清除,导致路由、配置过时。执行以下命令更新缓存:
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod
  • CRUD控制器响应格式问题:检查对应实体的CRUD控制器(如ProjectCrudController),确保未自定义返回格式导致客户端无法接受(例如仅返回JSON但客户端期望HTML)。

内容的提问来源于stack exchange,提问作者Akuseru_w

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:50:36