Я добавил капчу-бота в свою регистрационную форму.
Мой бот с капчей отлично работает в локальном режиме (в режимах dev
и prod
), но когда я развернул код в Heroku, страница / register больше не работает. Я получаю такую ошибку:
ОШИБКА: для BotDetect требуется библиотека GD и ее вспомогательная библиотека: libpng, libjpeg и FreeType 2. Вы можете узнать больше об их установке / включении на http://php.net/manual/en/book.image.php.
Вы можете увидеть ошибку здесь: ссылка на веб-сайт
Я не думаю, что проблема в моем коде, но вот он: Код Controlleur:
/**
* @Route("/register", name="user_register", methods={"GET","POST"})
*/
public function register(Request $request,UserPasswordEncoderInterface $encoder): Response
{
$user = new User();
$form = $this->createForm(RegisterType::class, $user, ['validation_groups' => ['register'], ]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$hash = $encoder->encodePassword($user,$user->getPassword());
$user->setPassword($hash);
$this->addFlash('success', 'You succesfully registered, Now Login!');
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($user);
$entityManager->flush();
return $this->redirectToRoute('user_login');
}
return $this->render('authentication/register.html.twig', [
'user' => $user,
'form' => $form->createView(),
]);
}
Моя форма:
class RegisterType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('username')
->add('password',PasswordType::class)
->add('password2',PasswordType::class)
->add('email')
->add('name')
->add('captchaCode', CaptchaType::class, [
'captchaConfig' => 'ExampleCaptchaUserRegistration',
'constraints' => [
new ValidCaptcha([
'message' => 'Invalid captcha, please try again',
]),
],]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}
}
CaptchaCode на User.php
/**
* @CaptchaAssert\ValidCaptcha(
* message = "Invalid captcha, please try again",
* groups={"register"}
* )
*/
protected $captchaCode;
public function getCaptchaCode()
{
return $this->captchaCode;
}
public function setCaptchaCode($captchaCode)
{
$this->captchaCode = $captchaCode;
}
Ошибка журнала Heroku:
2020-09-17T10: 30: 04.377111 + 00: 00 heroku [router]: at = info method = GET path = / register host = bazar-chic.herokuapp.com request_id = 30e115f0-023b-4f59-a0b6-34777e9086ca fwd = 94.23.206.14 dyno = web.1 connect = 1ms service = 15ms status = 500 байт = 1288 протокол = https 2020-09-17T10: 30: 04.375520 + 00: 00 app [web.1]: 10.63.54.150 - - [17 / Сентябрь / 2020: 10: 30: 04 +0000] GET / register HTTP / 1.1 500 918 https://bazar-chic.herokuapp.com/register WordPress / 5.5.1; https://symfonyquestions.com 2020-09-17T10: 30: 04.806894 + 00: 00 heroku [router]: at = info method = HEAD path = / register host = bazar-chic.herokuapp.com request_id = 2d342c4d-5356-47aa-9517-017a83dd5cbc fwd = 94.23.206.14 dyno = web.1 connect = 0ms service = 16ms status = 500 байт = 330 protocol = https 2020-09-17T10: 30: 04.807744 + 00: 00 app [web.1]: 10.102.182.112 - - [17 / сен / 2020: 10: 30: 04 +0000] HEAD / register HTTP / 1.1 500 - https://bazar-chic.herokuapp.com/register WordPress / 5.5.1; https://symfonyquestions.com
gd
недоступно. Как видно из поддержки heroku, ее можно включить добавив"ext-gd": "*",
в разделrequire
файлаcomposer.json
. - person msg   schedule 17.09.2020heroku logs -t
и вижу ошибку 500 в cmd. Я отредактировал свой вопрос и добавил ошибку логов. - person Meh Di   schedule 17.09.2020