0

我正在使用 symfony4。一切都在开发中工作。但是 prod 的教程较少。如何部署教程只提供较少的信息(没有关于共享主机的信息)

Index.php 阻止 .env 读取环境变量。没关系。但在 Symfony2.x 中,我们可以通过 app.php 和 app_dev.php 前端控制器在 env 之间切换。但是在 Symfony4 中没有这样的文件只有一个 index.php 和一个 .env 文件

根据部署链接

如何设置环境变量取决于您的设置:可以在命令行、Nginx 配置中或通过托管服务提供的其他方法设置它们。

我正在使用共享主机,因此提供商不允许更改环境变量。如果它在我的文件中,我可以很好地使用它。

目前为了克服这个问题,我正在做的是,

$_SERVER['APP_ENV'] = "prod";
$_SERVER['APP_SECRET'] = "79cfa09223f91b1a195134019e0b17ac";

我在 index.php 和 bin/console 文件的开头添加了这两行。我认为这不是正确的做法。

建议我热部署 symfony4(甚至测试产品环境)

4

2 回答 2

1

我正在使用 apache 服务器进行生产(共享主机)。简单的事情是编辑 .htaccess 文件。

将此添加到 .htaccess 文件的底部

# ENVIRONMENT VARIABLES
SetEnv APP_ENV prod
SetEnv APP_SECRET 79cfa09223f91b1a195134019e0b17ac

这将解决问题。


这些是我个人面临的事情,所以要帮助别人,

有时 symfony4 在 php7.2 服务器上抛出错误。为了解决这个问题,在 .htaccess 文件中添加以下代码,

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php72” package as the default “PHP” programming language.
<IfModule mime_module>
  AddType application/x-httpd-ea-php72 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

此代码由我的服务器自动生成。我想有人需要这个。


起初我尝试在没有 .htaccess 文件的情况下部署我的应用程序。但这会引发错误,生产服务器中没有输出。我尝试切换 php,最后我看到了服务器本身生成的上述代码,后来我添加了 setenv 以与 symfony4 一起使用。

于 2017-12-23T06:01:57.303 回答
1

您需要.env服务器上的文件具有APP_ENV=prod.env文件是针对特定机器的,它被 git 忽略,而.env.dist被跟踪。所以编辑 .env.dist 并提交它。

将您的项目放在与 public_html 相同的目录中作为兄弟。然后删除 public_html 目录并将其重新创建为指向您的项目公共目录的符号链接。

重命名.env.dist.env.

运行composer require symfony/apache-pack它将创建 .htaccess 文件,你应该很好。

在 A2hosted 服务器上为我工作。

2019-06-28 更新

刚刚部署到 Bluehost,他们终于升级到 PHP 7。我使用与上述相同的过程部署到一个子域,除了一个更改。为了启用 PHP 7.1,我必须将以下行添加到 apache-pack 生成的 public/.htaccess 文件中

AddHandler application/x-httpd-ea-php71 .php
于 2018-02-25T06:31:36.193 回答