我正在使用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环境)
答案 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服务器上为我工作。