【问题标题】:Symfony 4 - Prod. deployment failsSymfony 4 - 产品。部署失败
【发布时间】:2019-12-07 22:45:11
【问题描述】:

在 Symfony 4 部署之后,我遇到了几个错误。只有主页工作,当试图导航到另一个页面时,网络服务器返回 404,数据库连接有异常行为,没有连接到数据库......在开发环境中一切正常,但是当我切换到 PROD 时,一切都失败了.在服务器中,在端口 8000 中启用本地 symfony 应用程序服务器,在开发环境中一切正常。我已按照https://symfony.com/doc/current/deployment.html 中的所有步骤操作,但我无法使应用程序在 PROD 中正常工作。

请帮忙

BR

【问题讨论】:

  • 检查你的 symfony 日志文件,那里应该有线索。
  • 那里什么都没有......

标签: symfony4


【解决方案1】:

这是因为您缺少重写规则 .htaccess 文件,这是经过测试的有效解决方案:

在您的项目目录中运行,这将为您在项目目录中创建 .htaccess

sudo composer require symfony/apache-pack

然后在您的 apache 虚拟配置文件中修改/添加您的虚拟主机指令。

for Windows Xampp it is here -> C:\xampp\apache\conf\extra\httpd-vhosts.conf


for Linux default Ubuntu it is here -> /etc/apache2/sites-enabled/yoursite.conf

这是它在 Windows Xampp 上的样子

<VirtualHost 127.0.0.1:80>
DocumentRoot "C:\xampp\htdocs\final\public"
DirectoryIndex index.php

<Directory "C:\xampp\htdocs\project\public">
    #AllowOverride All # for older version of apache less than 2.4
    #Order Allow,Deny # for older version of apache less than 2.4
    #All from All # for older version of apache less than 2.4
    Require all granted
</Directory>
</VirtualHost>

这是它在 Linux 上的样子

<VirtualHost *:80>
ServerName company.com
DocumentRoot /var/www/company.com/web

<Directory /var/www/company.com/web>
    Options Indexes FollowSymlinks
    AllowOverride All

    # Use these 2 lines for Apache 2.3 and below
    ##Order allow,deny
    ##allow from all

    # Use this line for Apache 2.4 and above
    Require all granted
</Directory>

ErrorLog /var/log/apache2/events_error.log
CustomLog /var/log/apache2/events_access.log combined

重启你的apache

sudo service restart apache2

完成,应该可以工作了!

来源:https://www.youtube.com/watch?v=OVbErFBUinI

【讨论】:

    【解决方案2】:

    我无法发表评论,因为我回答的声誉不足 50 个:

    你必须这样做:

    清除缓存 预热产品缓存 (我想你已经做到了?)

    接下来,安装 apache 配置:

    composer require symfony/apache-pack
    

    这将创建您必须编辑的 apache 配置文件。 您在此处找到的描述:Symfony- Configuring Webserver

    (我认为缺少 .htaccess 会导致错误) 尝试:yourhost/projectFolder/public 如果要显示您的站点,请确保服务器配置错误或缺少 .htaccess。

    【讨论】:

    • 嗨,我已经完成了所有这些事情。 .htaccess 文件也存在。我一步一步地遵循 Symfony 文档。当我在 DEV 环境中工作时一切正常,但在 PROD 中没有发生针对数据库的活动。没有错误,但没有行动。就像数据库不存在一样。例如,我有一个包含每个用户密码的用户表。登录 PROD (APP_ENV=prod) 时,您可以使用任何凭据登录,它不会针对数据库进行验证,也不会针对数据库采取任何行动……多多夸奖!我已经尝试过使用 httpd 和 nginx 我们的服务器,但没有任何效果......而不是使用 symfony 本地 Web 服务器!
    • 但这只是一个问题。如果数据库连接失败,Symfony 会非常大声地哭泣。我确定 Symfony 是给出 500 错误而不是 404。我认为路由是问题所在。检查您的 routes.yaml 或 prod 中可用的路由注释。
    • 您好丹尼尔,感谢您的关注。我检查了所有路由,所有配置问题,安装在 httpd 和 nginx 上......最后,问题是 $form->isValid() 在 DEV 环境中工作,而不是在 PROD 环境中。我的意思是,相同的形式,相同的数据,在 DEV 中是有效的,在 PROD 中是无效的。所以,所有的逻辑都没有被调用。但问题是……为什么????相同的代码,相同的数据,不同的环境,相同的代码工作方式不同??????我真的很担心。我已经对此进行了注释,现在可以使用,但问题是为什么相同的代码在 DEV 中有效,而不是在 PROD if ($form->isValid()) {}
    • 调试你的表单,我相信你会很快解决这个问题。在这里你会找到一个调试教程:symfonycasts.com/blog/symfony-debugging-form-errors
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2018-05-20
    • 2018-08-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多