php - 为什么我的验证码机器人可以在本地工作,但不能在 heroku 上工作?
问题描述
我在注册表单中添加了一个验证码机器人。
我的验证码机器人在本地(开启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,
]);
}
}
验证码在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[路由器]: 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 连接=1ms 服务=15ms 状态=500 字节=1288 协议=https 2020-09-17T10:30:04.375520+00:00 app[web.1]: 10.63.54.150 - - [17/Sep/2020:10:30:04 +0000] "GET /register HTTP/1.1" 500 918 "https://bazar-chic.herokuapp.com/register" "WordPress/5.5.1; https ://symfonyquestions.com2020-09-17T10:30:04.806894+00:00 heroku[路由器]: 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 连接=0ms 服务=16ms 状态=500 字节=330 协议=https 2020-09-17T10:30:04.807744+00:00 app[web.1]: 10.102.182.112 - - [17/Sep/2020:10:30:04 +0000] "HEAD /register HTTP/1.1" 500 - "https://bazar-chic.herokuapp.com/register" "WordPress/5.5.1; https ://symfonyquestions.com
解决方案
尝试在 localhost 中使用 ngrok 。https://ngrok.com/
推荐阅读
- git - 为所有项目生成源和更新文件夹
- c# - ASP.NET - 页面重新加载后 GridView 为空
- rest - Hbase REST 跳过授权
- node.js - node.js http 连接适用于 AWS 实例,不适用于 LoadBalancer
- javascript - Vue如何在提交表单时触发子组件
- python - 在python中合并两个字典视图
- ocr - 使用 OpenALPR PrepCharsForTraining 实用程序的字母缺失部分
- python - 在python中的数据框列表中访问数据框的列
- .net-core - EF Core 中的多个请求而不是一个
- linux - 在 bash 脚本中对一个 IF 内的各种条件进行分组