使用FOSRest Bundle+FOSUser开发API注册表单遇类未找到错误
解决FOSRestBundle找不到Symfony Controller类的致命错误
嘿,这个问题我太熟了——本质就是Symfony版本和FOSRestBundle版本不兼容闹的!从Symfony 4.0开始,Symfony\Bundle\FrameworkBundle\Controller\Controller这个基类就被官方弃用了,换成了AbstractController,但旧版的FOSRestBundle还在硬依赖那个已经被移除的旧类,自然会报找不到的致命错误。
下面给你两个靠谱的解决办法,优先选第一个:
方案1:升级FOSRestBundle到兼容版本(推荐)
先搞清楚你当前用的Symfony版本,终端跑这个命令就能看到:
php bin/console --version
然后对应选FOSRestBundle的版本:
- Symfony 4.x/5.x → 用FOSRestBundle 3.x版本
- Symfony 6.x及以上 → 用FOSRestBundle 4.x+版本
打开你的composer.json,修改require里的FOSRestBundle版本约束,比如针对Symfony 6.x:
{ "require": { "friendsofsymfony/rest-bundle": "^4.0" } }
然后执行更新:
composer update friendsofsymfony/rest-bundle
方案2:临时修改FOSRestController继承类(不推荐,应急用)
如果你暂时没法升级bundle,能临时改vendor目录里的文件救急,但注意后续composer更新会覆盖这个修改:
找到D:\e-electricity.com\vendor\friendsofsymfony\rest-bundle\FOS\RestBundle\Controller\FOSRestController.php,把第24行的代码:
abstract class FOSRestController extends Controller {
改成:
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; abstract class FOSRestController extends AbstractController {
这个办法只是权宜之计,还是优先升级bundle更稳妥。
最后别忘了收尾操作
更新完之后,一定要清缓存,避免旧缓存搞事情:
php bin/console cache:clear --env=dev php bin/console cache:clear --env=prod
另外可以跑composer show确认一下所有依赖的版本都匹配,没有冲突。
内容的提问来源于stack exchange,提问作者Claude
相关产品推荐
相关产品推荐

