生产环境出现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
相关产品推荐
相关产品推荐

