Symfony4部署到共享主机

时间:2017-12-23 05:14:21

标签: php apache symfony symfony4

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

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

根据部署link

  

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

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

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

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

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

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

2 个答案:

答案 0 :(得分: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一起使用。

答案 1 :(得分:1)

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

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

.env.dist重命名为.env

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

在A2hosted服务器上为我工作。