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
我正在使用 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