[EDIT 2020] --> 使用 'symfony/dotenv'
根据如何部署官方文档,您可以做的是将作曲家文件中的“symfony/dotenv”从 require-dev 移动到 require 以便它也安装在生产环境中。然后你可以继续使用 .env.local 文件。
如果你不想或不能使用 'symfony/dotenv'
对于 Apache 和 Ubuntu,首先你需要激活mod_env
sudo a2enmod env
sudo service apache2 restart
然后将环境变量放在 .htacess 或 vhost 配置文件中。对于 SF4,.htacess 位于 /public 中,语法如下。我不知道顺序是否重要,我会说不,所以我将它们添加到文件的顶部。
SetEnv APP_ENV prod
SetEnv APP_SECRET fjsdkfj...
SetEnv DATABASE_URL mysql://...
现在一些随机有用的技巧:
您不想提交 .htaccess 文件。将其添加到部署工具的共享部分。就我而言(easy-deploy-bundle)
->sharedFilesAndDirs(['public/.htaccess'])
您需要复制 /etc/environment 中的环境变量,以便作曲家可以使用它......这个真的很痛苦,因为现在您复制了变量。所以 Symfony 团队说 env 变量更好,因为更安全和标准。但是复制信息一点也不安全。也许我做错了(这是完全可能的)。如果您知道如何避免这种情况,请分享。该printenv
命令将显示您是否正确配置。
如果您使用 easy-deploy-bundle 进行生产,请删除 composer 上的 --quiet 选项,以便在失败时有明确的错误消息(例如,因为它找不到 env 变量)。还要检查 --no-dev 选项是否在这里,所以它不会安装 dotenv 包。
->composerInstallFlags('--prefer-dist --no-interaction --no-dev')