Symfony 5执行composer update时security-checker返回403错误问题
问题原因
- Symfony 5.3版本起,官方已废弃原有的
sensiolabs/security-checker依赖包及配套的安全检查API,旧API端点现已停止服务,所以调用旧命令security-checker security:check时会返回403错误。 - 你手动执行的
symfony security:check是Symfony CLI工具自带的新版安全检查功能,使用的是官方新的服务接口,因此可以正常运行。 - 你没有在composer.json的
auto-scripts中显式配置安全检查命令,但旧版的Symfony Flex会在检测到项目安装过sensiolabs/security-checker包时,自动将旧的安全检查命令加入到post-install/post-update的执行队列中,这就是composer update过程中会自动执行旧命令的原因。 - 你提到的
php bin/console security:check是旧版本security-bundle提供的命令,Symfony 5.3起已经从官方安全组件中移除,就算本地能执行也是旧依赖包残留的功能,同样请求的是已废弃的API。
解决方法
- 卸载废弃的旧安全检查包:
composer remove sensiolabs/security-checker --dev
卸载后Flex就不会再自动触发旧的安全检查命令,composer update的报错会直接消失。
2. 如果需要在composer执行流程中自动跑安全检查,可以在composer.json的auto-scripts配置中新增新版命令:
"auto-scripts": { "cache:clear": "symfony-cmd", "assets:install %PUBLIC_DIR%": "symfony-cmd", "symfony security:check": "script" },
配置后composer执行完安装/更新操作时,就会自动调用Symfony CLI的新版安全检查功能。
内容的提问来源于stack exchange,提问作者Antoine Nedelec
相关产品推荐
相关产品推荐

