Dan*_*ter 6 php symfony symfony5
从 Symfony 4.4 -> 5.3 升级后,我遇到了一些我无法解决的弃用问题。
\n以下是 3 个弃用示例:
\nUser Deprecated: Since symfony/framework-bundle 5.3: The "session.storage.factory.service" service is deprecated, use "session.storage.factory.native", "session.storage.factory.php_bridge" or "session.storage.factory.mock_file" instead.\nUser Deprecated: Since symfony/security-core 5.3: The "Symfony\\Component\\Security\\Core\\Event\\AuthenticationFailureEvent" class is deprecated, use "Symfony\\Component\\Security\\Http\\Event\\LoginFailureEvent"\nUser Deprecated: Since symfony/http-kernel 5.3: "Symfony\\Component\\HttpKernel\\Event\\KernelEvent::isMasterRequest()" is deprecated, use "isMainRequest()" instead.\nRun Code Online (Sandbox Code Playgroud)\n这只是 30 次弃用中的 3 次。我的问题是:解决此警告的正确方法是什么?(我需要解决,因为我每分钟有很多请求,每次在 dev.log 中写入此警告时 - 该文件都会爆炸)
\n我想从第三个警告开始。这是跟踪:
\n../vendor/symfony/http-kernel/Event/KernelEvent.php:88 {\xe2\x96\xb6}\n../vendor/symfony/web-link/EventListener/AddLinkHeaderListener.php:41 {\xe2\x96\xb6}\n../vendor/symfony/event-dispatcher/Debug/WrappedListener.php:117 {\xe2\x96\xb6}\n../vendor/symfony/event-dispatcher/EventDispatcher.php:230 {\xe2\x96\xb6}\n../vendor/symfony/event-dispatcher/EventDispatcher.php:59 {\xe2\x96\xb6}\n../vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:151 {\xe2\x96\xb6}\n../vendor/symfony/http-kernel/HttpKernel.php:190 {\xe2\x96\xb6}\n../vendor/symfony/http-kernel/HttpKernel.php:178 {\xe2\x96\xb6}\n../vendor/symfony/http-kernel/HttpKernel.php:79 {\xe2\x96\xb6}\n../vendor/symfony/http-kernel/EventListener/ErrorListener.php:60 {\xe2\x96\xb6}\n../vendor/symfony/event-dispatcher/Debug/WrappedListener.php:117 {\xe2\x96\xb6}\n../vendor/symfony/event-dispatcher/EventDispatcher.php:230 {\xe2\x96\xb6}\n../vendor/symfony/event-dispatcher/EventDispatcher.php:59 {\xe2\x96\xb6}\n../vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:151 {\xe2\x96\xb6}\n../vendor/symfony/http-kernel/HttpKernel.php:218 {\xe2\x96\xb6}\n../vendor/symfony/http-kernel/HttpKernel.php:90 {\xe2\x96\xb6}\n../vendor/symfony/http-kernel/Kernel.php:199 {\xe2\x96\xb6}\n../public/index.php:25 {\xe2\x96\xb6}\nRun Code Online (Sandbox Code Playgroud)\n所有文件都直接来自 symfony,没有来自我,这就是为什么我的问题从哪里开始解决这个警告。
\nDan*_*ter 12
好的,现在我已经不再弃用了,但是从 4.4 升级到 5.3 后还有一些事情需要注意
为了查找所有警告,我创建了一个新的 symfony 项目来比较不同的文件
KernelEvent::isMasterRequest()" is deprecated, use "isMainRequest()
查看您的文件src/Kernel.php- 在那里您可以找到已弃用的方法
The "session.storage.factory.service" service is deprecated
打开你的framework.yaml并与以下代码进行比较。也许它可以帮助你:
session:
handler_id: session.handler.native_file
save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
# 2 Days lifetime (172800 seconds)
cookie_lifetime: 172800
cookie_secure: 'auto'
cookie_samesite: 'lax'
#storage_id: session.storage.mock_file
storage_factory_id: session.storage.factory.native
Run Code Online (Sandbox Code Playgroud)
The "Symfony\Component\HttpFoundation\Session\SessionInterface are deprecated
我在旧的 LoginAuthenticator 中找到了这个(默认情况下为“App\Security...”)。将其替换为“use Symfony\Component\HttpFoundation\RequestStack;现在您可以注入它并使其可用” $this->requestStack,然后使用“完成”更改所有$this->session内容$this->requestStack->getSession()!
大多数其他弃用都与symfony 5.1 中引入的新的基于身份验证器的系统有关。你必须编辑你的security.yaml. 我向你展示我的改变:
security:
enable_authenticator_manager: true
password_hashers:
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
providers:
users_in_memory: { memory: null }
app_user_provider:
entity:
class: App\Entity\User
property: username
firewalls:
main:
# default stuff
provider: app_user_provider
http_basic: ~
form_login:
default_target_path: mission
use_referer: true
target_path_parameter: redirect_url
login_path: login
check_path: login
entry_point: form_login
access_denied_handler: App\Security\AccessDeniedHandler
custom_authenticator: App\Security\CustomAuthenticator
Run Code Online (Sandbox Code Playgroud)
为了使身份验证警告更容易理解,请使用CustomAuthenticator制作者捆绑包创建一个新的。现在,您可以将旧的身份验证器与新的身份验证器进行比较,并将新方法放入旧的身份验证器中。您需要进行一些更改。
就是这样。大多数弃用现在应该得到解决。
| 归档时间: |
|
| 查看次数: |
11179 次 |
| 最近记录: |