Symfony路由失效,所有请求均返回phpinfo页面求助
问题排查步骤
确认Web服务器根目录配置
确保Docker中的Web服务(Apache/Nginx)根目录指向Symfony项目的public文件夹——这是Symfony的唯一入口目录。如果根目录误设为项目根目录,服务器可能加载其他默认文件(比如误放的phpinfo文件),而非Symfony的index.php入口文件。验证Web服务器的路由转发规则
- 若使用Apache:确认已启用
mod_rewrite模块,public/.htaccess文件存在且配置正常(Symfony默认会生成该文件),同时Apache配置中AllowOverride All已开启,保证rewrite规则能生效。 - 若使用Nginx:检查配置文件是否包含正确的转发规则,确保所有请求都导向
index.php,示例配置片段:location / { try_files $uri $uri/ /index.php$is_args$args; }
- 若使用Apache:确认已启用
清理Symfony缓存
执行容器内的缓存清理命令:php bin/console cache:clear即便
debug:router能显示路由,缓存异常也可能导致路由不生效,尤其是切换环境后。检查控制器路由注解的正确性
确认HomeController中正确导入路由注解类,且路由属性配置无误:// src/Controller/HomeController.php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Annotation\Route; class HomeController extends AbstractController { #[Route('/home', name: 'home')] public function index() { return $this->render('home/index.html.twig'); } }注意命名空间和注解的拼写,避免低级错误。
排查Docker文件同步问题
确认本地修改的控制器、路由配置文件已同步到Docker容器中。如果使用volume挂载,检查挂载路径是否正确,防止容器内的文件还是未修改的旧版本。检查public目录下的冗余文件
查看public目录下是否存在phpinfo.php、index.html等优先级高于index.php的默认文件,服务器会优先加载这些文件,导致Symfony入口未被执行。
内容的提问来源于stack exchange,提问作者Saleck
相关产品推荐
相关产品推荐

