Gro*_*ler 9 php amazon-ec2 amazon-web-services amazon-elastic-beanstalk
我正在使用Elastic Beanstalk在AWS EC2服务器上托管我的PHP项目.我已经设置了我的ENV Vars php dotenv,这似乎是从我的根.env文件中获得我的vars :
DbConnect.php:
require '../vendor/autoload.php';
$dotenv = new Dotenv($_SERVER['DOCUMENT_ROOT']);
$dotenv->load();
$DB_HOST = getenv('DB_HOST');
$DB_USERNAME = getenv('DB_USERNAME');
$DB_PASSWORD = getenv('DB_PASSWORD');
$DB_DATABASE = getenv('DB_DATABASE');
$mysqli = new mysqli($DB_HOST, $DB_USERNAME, $DB_PASSWORD, $DB_DATABASE);
Run Code Online (Sandbox Code Playgroud)
因此,在AWS管理控制台中,我在软件配置,git推送和重新部署中设置了相同的名称ENV vars.我收到500错误,因为EC2 ENV变量似乎没有恢复.

我还需要做些什么吗?
更新:
eb printenv 显示正确的env var值.
引自https://github.com/vlucas/phpdotenv
phpdotenv适用于开发环境,通常不应用于生产环境.在生产中,应该设置实际的环境变量,以便在每个请求上加载.env文件没有开销.这可以通过使用Vagrant,chef或Puppet等工具的自动部署流程来实现,也可以通过Pagodabox和Heroku等云主机手动设置.
如果你没有.env文件,你将有php致命错误
致命错误:未捕获异常'Dotenv\Exception\InvalidPathException',并显示消息'无法读取/home/vagrant/Code/project/.env中的环境文件'.在第75行的/home/vagrant/Code/project/vendor/vlucas/phpdotenv/src/Loader.php中
如果您希望下面是您可以设置Environment Variable检查的示例代码,它只会加载Dotenv类(如果它位于本地/测试环境中)
if(getenv('APP_ENV') === 'local' || getenv('APP_ENV') === 'testing')
{
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
}
Run Code Online (Sandbox Code Playgroud)
或者另一种方法是检查.env文件是否存在
$filePath = rtrim(__DIR__, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR . '.env';
if(is_file($filePath) && is_readable($filePath))
{
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |