Cyb*_*101 5 php registration symfony
我已经创建了一个用户注册表,就像在文档中一样.稍后我想添加CSRF.从那以后它再也不能正常工作了.我安装并删除了包. https://symfony.com/doc/current/doctrine/registration_form.html
composer require security-csrf
composer remove security-csrf
rm -rf vendor
rm -rf var/cache/*
Run Code Online (Sandbox Code Playgroud)
这没有用.
当我填写表格并提交.如果用户已保存.我第二次,我收到下面的错误消息.
只有当我在浏览器中删除cookie"PHPSESSID"时,我才能再次发送表单.之后再次出现同样的问题.
PDOException:
There is already an active transaction
at vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:1249
at PDO->beginTransaction()
(vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:1249)
at Doctrine\DBAL\Connection->beginTransaction()
(vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:376)
at Doctrine\ORM\UnitOfWork->commit(null)
(vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:358)
at Doctrine\ORM\EntityManager->flush()
(src/Controller/RegistrationController.php:40)
at App\Controller\RegistrationController->registerAction(object(Request), object(UserPasswordEncoder))
(vendor/symfony/http-kernel/HttpKernel.php:149)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
(vendor/symfony/http-kernel/HttpKernel.php:66)
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
(vendor/symfony/http-kernel/Kernel.php:190)
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
(public/index.php:37)
Run Code Online (Sandbox Code Playgroud)
我试着调试一下.交易在某处激活,然后不再激活.我找不到问题.有人能帮助我吗?
的symfony /配置/ services.yaml
services:
Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler:
arguments:
- !service { class: PDO, factory: 'database_connection:getWrappedConnection' }
- { db_table: session, db_username: username, db_password: password }
Run Code Online (Sandbox Code Playgroud)
小智 20
我最近遇到了同样的问题,对我而言,这与使用PDOSessionHandler共享Doctrine连接有关getWrappedConnection.
在您services.yaml更改PdoSessionHandler服务定义时
Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler:
arguments:
- !service { class: PDO, factory: 'database_connection:getWrappedConnection' }
- { lock_mode: 1 }`
Run Code Online (Sandbox Code Playgroud)
即仅添加lock_mode参数.虽然我正在更深入地了解为什么使用LOCK_TRANSACTIONAL而不是LOCK_ADVISORY,但这对我"固定"了.
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |