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

生产环境出现Error 500但开发环境正常,请求排查

生产环境Error 500排查求助
  • 生产环境访问路由/forum/topic/{id}时触发Error 500错误,开发环境无此问题
  • 服务器无明显错误日志,注释掉$manager->flush()后错误消失,推测问题与Reading实体的持久化操作相关
  • 本地与服务器数据库表结构完全一致

相关代码如下:

#[Route('/forum/topic/{id}', name: 'forum.topic', methods: ['GET', 'POST'])]
public function index(
    ForumTopic $topic,
    MemberRepository $memberRepository,
    ReadingRepository $readingRepository,
    ForumForumRepository $repositoryCategory,
    ForumForumRepository $repositoryForum,
    ForumTopicRepository $repositoryTopic,
    ForumPostRepository $repositoryPost,
    PaginatorInterface $paginator,
    EntityManagerInterface $manager,
    Request $request
): Response
{  

    if($this->getUser())
    {
        $user = $this->getUser();
        $reading = $readingRepository->findOneBy(['user' => $user, 'topic' => $topic]);
         
        if ($reading === null) {
            $reading = new Reading();
            $reading->setUser($user);
            $reading->setTopic($topic);
        }

        $reading->setReadAt((new \DateTimeImmutable()));

        $manager->persist($reading);
        $manager->flush();

        $roles = $this->getUser()->getRoles();
         
        if (in_array('ROLE_MODERATOR', $roles)) {
            $categories = $repositoryCategory->findAll();
            $forums = $repositoryForum->findAll();
        }
    }


    /**
     * On récupère la liste des topics dans un arrray en fixant une limite à 20
     * @var array
     */
    $categories = null;
    $forums = null;

    $topic = $repositoryTopic->find(['id' => $topic]);

    // t = topic m = member mi = member_item
    $posts = $paginator->paginate(
        $repositoryPost
        ->createQueryBuilder('t')
        ->select('t', 'mi', 'm')
        ->leftJoin('t.author', 'm')
        ->leftJoin('m.item', 'mi')
        ->orderBy('t.createAt')
        ->where('t.topic = :id')
        ->setParameter('id', $topic->getId())
        ->getQuery()
        ->getResult(),
        $request->query->getInt('page', 1), 20);

    // Sanitize each ForumPost object in the paginated results
    foreach ($posts as $key => $post) {
        $posts[$key] = $this->htmlSanitizer->sanitizeObj($post);
    }

    $new_post = new ForumPost();

    $form = $this->createForm(PostType::class, $new_post);

    $form->handleRequest($request);

    if($form->isSubmitted() && $form->isValid())
    {
        $new_post = $form->getData();
        $new_post->setAuthor($this->getUser());
        $new_post->setTopic($topic);
        $manager->persist($new_post);

        $topic->setUpdateAt(new \DateTimeImmutable());
        $manager->persist($topic);

        $memberRepository = $this->getUser();
        $memberRepository->setExperience($memberRepository->getExperience() + 5);
        $manager->persist($memberRepository);

        $this->addFlash(
            'info-rpg',
            '+5xp (post forum)'
        );

        $manager->flush();

        $this->addFlash(
            'success',
            'Message créer avec succès'
        );


        return $this->redirectToRoute('forum.topic', ['id' => $topic->getId()]);
    }

    return $this->render($this->theme . '/forum/posts_list.html.twig', [
        'categories' => $categories,
        'forums' => $forums,
        'topic' => $topic,
        'posts' => $posts,
        'form' => $form,
    ]);
}

已在开发和生产环境分别测试,恳请协助排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:46:19