You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony HTML模板在生产环境失效问题求助

解决Symfony邮件模板在Hostinger生产环境找不到的问题

核心排查与修复步骤

从错误日志能看到,Twig仅在/public_html/templates和Symfony内置Form视图目录检索模板,说明问题出在模板路径、文件存在性或配置上,按以下步骤逐一验证:

1. 核对服务器上的模板文件状态

  • 确认文件位置:检查main/email/admission_mail.html.twig是否确实存在于服务器的/home/u511184722/domains/example.com/public_html/templates/目录下,完整路径应为/home/u511184722/domains/example.com/public_html/templates/main/email/admission_mail.html.twig
  • 注意大小写:Hostinger用的是Linux系统,文件名严格区分大小写,但本地Windows不区分。比如本地是Admission_Mail.html.twig,服务器上是小写文件名的话就会匹配失败,必须完全一致
  • 检查权限:确保模板文件权限设为644、父目录权限设为755,避免PHP进程无法读取文件

2. 验证Twig配置与缓存

  • 打开config/packages/twig.yaml,确认模板路径配置正确:
    twig:
      paths:
        '%kernel.project_dir%/templates': templates
    
    生产环境下如果有自定义路径配置,要确保没有被环境变量覆盖
  • 清理生产环境缓存:Symfony会缓存模板路径,执行以下命令刷新缓存(通过Hostinger的SSH终端或控制面板工具执行):
    php bin/console cache:clear --env=prod
    

3. 修正模板引用路径

  • 使用TemplatedEmail时,模板路径是相对于templates目录的相对路径。比如模板实际在templates/main/email/admission_mail.html.twig,就必须写main/email/admission_mail.html.twig,不能多写或少写层级
  • 改用renderView时同样要严格对应路径,示例代码修正如下:
    $email = (new Email())
        ->html($this->renderView('main/email/admission_mail.html.twig', [
            'name' => $name,
        ]));
    

4. 检查部署同步情况

  • 确认部署时templates/main/email目录及文件已完整同步到服务器,避免Git、FTP上传时遗漏或文件损坏。可以直接在服务器上查看文件内容,验证文件是否存在且完整

额外提示

  • 如果你用的是Symfony Flex结构,模板默认放在templates目录,不要混淆旧版本的app/Resources/views路径(该路径已废弃)
  • 测试时可以先创建一个极简的templates/test.html.twig,用代码引用test.html.twig,快速排查路径是否正常

内容的提问来源于stack exchange,提问作者Demi God

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 17:50:10