在没有.env文件的情况下运行项目时,bootstrap.php会在DotEnv组件尝试读取它时抛出致命错误

在没有.env文件的情况下运行项目时,bootstrap.php会在DotEnv组件尝试读取它时抛出致命错误,php,symfony,Php,Symfony,我已尝试使用以下教程部署Symfony应用程序: 当尝试加载该站点时,我得到一个500内部服务器错误。根据教程,我查看了我的托管错误日志,看到了很多关于DotEnv的东西。以下是输出的第一部分: PHP致命错误:未捕获 Symfony\Component\Dotenv\Exception\PathException:无法读取 /var/www/vhosts/137/332002/webspace/httpdocs/symfony_temp/.env 环境文件。在里面 /var/www/vhost

我已尝试使用以下教程部署Symfony应用程序:

当尝试加载该站点时,我得到一个500内部服务器错误。根据教程,我查看了我的托管错误日志,看到了很多关于DotEnv的东西。以下是输出的第一部分:

PHP致命错误:未捕获 Symfony\Component\Dotenv\Exception\PathException:无法读取 /var/www/vhosts/137/332002/webspace/httpdocs/symfony_temp/.env 环境文件。在里面 /var/www/vhosts/137/332002/webspace/httpdocs/symfony_temp/vendor/symfony/dotenv/dotenv.php:484

本教程告诉我将环境变量存储在其他地方,例如index.php。但是看看代码,我发现bootstrap.php会立即调用DotEnv并尝试从那里获取数据,我认为这最终会导致一个错误

我如何禁用DotEnv,使Symfony不使用它,并且我可以从其他地方简单地获取我的env变量?它托管在属于某个客户的托管环境中,我认为.htaccess不允许访问DotEnv,在这种情况下,我无法更改它,因为我无权编辑该.htaccess文件,甚至无法打开它。

bootstrap.php属于您。如果你不喜欢它的行为,就改变它

如果不想使用DotEnv,只需删除它,并删除代码中对它的任何引用,例如前面提到的bootstrap.php

请注意,在index.php这样的代码中硬编码配置变量听起来不是个好主意。即使您不使用环境变量,DotEnv也将帮助您将配置数据集中到与应用程序逻辑无关的单个文件中

为了获得最佳性能,请在dev上为生产设置配置环境变量,并使用前面提到的composer dump env prod。这将生成一个.env.local.php,您可以将其上载到生产环境,对于默认的bootstrap.php,它将阻止使用DotEnv。

bootstrap.php属于您。如果你不喜欢它的行为,就改变它

如果不想使用DotEnv,只需删除它,并删除代码中对它的任何引用,例如前面提到的bootstrap.php

请注意,在index.php这样的代码中硬编码配置变量听起来不是个好主意。即使您不使用环境变量,DotEnv也将帮助您将配置数据集中到与应用程序逻辑无关的单个文件中


为了获得最佳性能,请在dev上为生产设置配置环境变量,并使用前面提到的composer dump env prod。这将生成一个.env.local.php,您可以将其上载到生产环境,对于默认的bootstrap.php将阻止使用DotEnv。

不熟悉本教程,但DotEnv通常只在开发环境中使用,而不是在生产环境中使用。至少它应该检查$_SERVER['APP_ENV']是否存在。您也可以尝试使用composer dump env prod生成一个.env.local.php文件。虽然不熟悉本教程,但DotEnv通常只适用于开发环境,而不适用于生产环境。至少它应该检查$_SERVER['APP_ENV']是否存在。您还可以尝试使用composer dump env prod生成.env.local.php文件。默认情况下,DotEnv组件不用于生产环境。DotEnv可用于任何环境。建议您不要在前面提到的句子中使用它,您可以在产品上使用它。这取决于每个用户和他们自己的需求。在任何情况下,对于在PHP文件上硬编码凭据的人来说,DotEnv是一个明显的改进,性能影响可以忽略不计。实际上,建议不要在生产环境中使用.env文件,而使用环境变量(不是OP的选项),并生成一个.env.local.PHP。这可能是OP的一个选项,但我只是解决boostrap.php需要DotEnv的问题。用户应该明白,这些文件是他们自己的,可以根据自己的内心内容进行修改,而不是黑盒。没错,我不需要这个解释,我知道如何部署Symfony应用程序;嗯,你应该把这个写在答案里。这是一个upvote。默认情况下,DotEnv组件不用于生产环境。DotEnv可用于任何环境。建议您不要在前面提到的句子中使用它,您可以在产品上使用它。这取决于每个用户和他们自己的需求。在任何情况下,对于在PHP文件上硬编码凭据的人来说,DotEnv是一个明显的改进,性能影响可以忽略不计。实际上,建议不要在生产环境中使用.env文件,而使用环境变量(不是OP的选项),并生成一个.env.local.PHP。这可能是OP的一个选项,但我只是针对boostrap.p
hp需要DotEnv。用户应该明白,这些文件是他们自己的,可以根据自己的内心内容进行修改,而不是黑盒。没错,我不需要这个解释,我知道如何部署Symfony应用程序;嗯,你应该把这个写在答案里。这是一票。