Symfony4 部署到共享主机

Symfony4 deploy to shared hosting

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

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

根据部署 link

How you set environment variables, depends on your setup: they can be set at the command line, in your Nginx configuration, or via other methods provided by your hosting service.

我正在使用共享主机,因此提供商不允许更改环境变量。如果在我的档案里,我可以用得很好。

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

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

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

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

我正在使用 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 一起工作。

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

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

.env.dist 重命名为 .env

运行 composer require symfony/apache-pack 它将创建 .htaccess 文件,您应该没问题。

在 A2 托管服务器上为我工作。

更新2019-06-28

刚刚部署到 Bluehost,他们最终升级到 PHP 7。我使用与上述相同的过程部署到 sub-domain,只是有一点不同。我必须将以下行添加到 apache-pack 生成的 public/.htaccess 文件中,以便启用 PHP 7.1

AddHandler application/x-httpd-ea-php71 .php