php – dotenv在生产时需要.env文件
我正在使用dotenv for
PHP来管理环境设置(不是lavarel,但我标记了它因为lavarel也使用了dotenv)
我已从代码库中排除了.env,并为所有其他协作者添加了.env.example 在dotenv的github页面上:
我不明白的是我得到以下异常: PHP致命错误:未捕获异常’InvalidArgumentException’,消息’Dotenv:环境文件.env未找到或无法读取. 这与文档说“应该设置实际环境变量以便在每个请求上加载.env文件没有开销”相矛盾. 所以问题是,如果有任何理由为什么dotenv抛出异常和/或我错过了什么?首先,与其他dotenv库(ruby)相比,行为是不同的 我可以轻松地解决这个问题,这是一个不太好的解决方案: if(getenv('APPLICATION_ENV') !== 'production') { /* or staging */ $dotenv = new DotenvDotenv(__DIR__); $dotenv->load(); } 我认为最好的解决方案,但我认为dotenv应该处理这个问题. $dotenv = new DotenvDotenv(__DIR__); //Check if file exists the same way as dotenv does it //See classes DotEnvDotEnv and DotEnvLoader //$filePath = $dotenv->getFilePath(__DIR__); //This method is protected so extract code from method (see below) $filePath = rtrim(__DIR__,DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR . '.env'; //both calls are cached so (almost) no performance loss if(is_file($filePath) && is_readable($filePath)) { $dotenv->load(); }
Dotenv是围绕一个想法构建的,它只会在开发环境中使用.因此,它总是希望存在.env文件.
您不喜欢的解决方案是使用Dotenv的推荐方法.似乎是won’t change in near future.项目问题跟踪器中的相关讨论:https://github.com/vlucas/phpdotenv/issues/63#issuecomment-74561880 请注意,Mark offers有一个很好的生产/登台环境方法,它可以跳过文件加载,但不会验证 $dotenv = new DotenvDotenv(); if(getenv('APP_ENV') === 'development') { $dotenv->load(__DIR__); } $dotenv->required('OTHER_VAR'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |