在 Heroku 上部署 Symfony5/php7 应用程序时找不到模板“base.html.twig”错误消息

Posted

技术标签:

【中文标题】在 Heroku 上部署 Symfony5/php7 应用程序时找不到模板“base.html.twig”错误消息【英文标题】:Unable to find template "base.html.twig" error message while deploying Symfony5/php7 app on Heroku 【发布时间】:2021-11-16 03:33:26 【问题描述】:

在将我的 Symfony5/php7.4/MariaDB 应用程序从 Github 部署到 Heroku 时,我收到以下错误消息:""message":"Uncaught PHP Exception Twig\Error\LoaderError:"Unable to find template "base.html .twig”(查看:/app/templates、/app/vendor/symfony/twig-bridge/Resources/views/Form)在“home.html.twig”中 虽然我的项目中的模板文件夹中确实有一个 base.html.twig 文件。

我已经做了什么,因此不考虑失败的原因:

我在项目的根目录下创建了一个 procfile,说明 web:heroku-php-apache2 public/ 这是我项目中文件的确切名称,即 public/, 感谢 composer require apache-pack 命令,我在项目的根目录中添加了一个 .htaccess 文件, 我在 Heroku 中使用 Heroku 附加的正确插件 DB url 设置了我的配置变量,并将我的 APP_ENV 设置为 prod 环境, 我在项目中设置了所有捆绑包配置,以便它们也可以在 prod 环境中工作, 我重新部署了我的应用程序, 在我的开发环境中,应用程序运行良好。我的 composer.josn 文件中有一个自动加载 psr4 策略,如下所示:
"autoload": 
        "psr-4": 
            "App\\": "src/"
        
    

指向 App 命名空间的 src 文件。

所有文件都有正确的命名空间。 我的文件目录名称如“public”、“templates”不包含大写字母,因为我在研究 SOF 时看到了类似的帖子,指出 Heroku 系统使用的 Linux 区分大小写。这似乎不是我的问题。 我什至在每个文件和我的自动加载 psr4 中将我的“App”命名空间重命名为“app”命名空间,因为错误消息中提到“looked into: /app/templates”没有大写字母。这会生成一个 Heroku 失败的构建。

再一次,虽然我专门为 Heroku 生产环境设置了新的环境变量,但这个问题仅在部署到 Heroku 时出现。

有谁知道这个错误消息的原因可能是什么?非常感谢。

PS:如果您因为发现它不清楚或无用或没有显示足够的研究(尽管我做过)而对这个问题进行评分,请具体并添加评论以解释您的负面评价的原因,以保持这个地方的质量,并帮助我了解您的评分。

【问题讨论】:

【参考方案1】:

它终于在我的 Heroku 生产环境中运行良好。我做了几个改变。一个可以解释问题根源的原因是我在几个模板中使用了简单的引号作为扩展指令,如下所示:“% extends 'base.html.twig' %,我还注意到在结束引号之前有一个空格这些模板说明之一,如下所示:% extends "base.html.twig" %。我编辑了这些说明并用双引号替换了简单引号,并删除了模板名称中的空格。应用程序部署正确不久之后。这可能是 Twig 加载错误消息的答案。

【讨论】:

“单引号”不是问题 所以,我想,我提到的空白可能是问题所在。

以上是关于在 Heroku 上部署 Symfony5/php7 应用程序时找不到模板“base.html.twig”错误消息的主要内容,如果未能解决你的问题,请参考以下文章

在 Heroku 上部署时未找到模块错误

在 Heroku 上部署 React 和 Django

在 Heroku 上部署 asgi 和 wsgi

如何在 Heroku 上部署 Flutter Web

在heroku上部署django网站时出错

在 heroku 上部署 typeorm/typescript 应用程序