gpt4 book ai didi

Laravel 4.1 部署 - 无法识别生产 .env.php

转载 作者:行者123 更新时间:2023-12-04 15:34:21 25 4
gpt4 key购买 nike

出于某种原因,我的生产 laravel 应用程序认为它在本地环境中。

/var/www/appname/.env.php

<?php

return
[
'APP_ENV' => 'production',
'DB_HOST' => 'HIDDEN',
'DB_NAME' => 'HIDDEN',
'DB_PASSWORD' => 'HIDDEN'
];

/var/www/appname/bootstrap/start.php
$env = $app->detectEnvironment(function()
{
return getenv('APP_ENV') ?: 'local';
});

/var/www/appname/app/config/database.php
...
...
'mysql' => array(
'driver' => 'mysql',
'host' => getenv('DB_HOST'),
'database' => getenv('DB_NAME'),
'username' => getenv('DB_USERNAME'),
'password' => getenv('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'lar_',
),
...
...

sudo php artisan env (通过 SSH)
`Current application environment: local

php artisan tinker然后 getenv('DB_NAME')
$ php artisan tinker
[1] > getenv('DB_NAME');
// false

所以要么我的环境变量没有设置,要么 Laravel 没有识别我的 .env.php生产环境的文件。

更新

在 IRC 上 Anultro 的帮助下,似乎 .env.php 尚未加载。因此,必须在 Laravel 尝试检测环境之前设置 APP_ENV。这是有道理的,因为 Laravel 在决定是否使用 .env.php 之前需要知道运行的是什么环境或 .env.local.php .

说了这么多, .env.php仍应用于存储数据库凭据和 key 等...但我仍然遇到问题,因为当我尝试运行时,应用程序仍然返回 false getenv('DB_NAME')
有什么建议?

最佳答案

对于所有想知道的人......为了解决这个问题,我只是在生产服务器上编辑了我的 httpd.conf 文件,如下所示:

SetEnv APP_ENV production

现在 laravel 知道该应用程序正在生产中。

如果您使用的是 nginx,我现在已经迁移了我的站点以添加以下内容,您可以将脚本传递到可用事件站点中的 FCGI 服务器 /etc/nginx/sites-available/{sitename} :
fastcgi_param APP_ENV production;

关于Laravel 4.1 部署 - 无法识别生产 .env.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22126709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com