首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Symfony4结构的参数文件中检索环境变量?

如何在Symfony4结构的参数文件中检索环境变量?
EN

Stack Overflow用户
提问于 2017-08-25 11:49:23
回答 2查看 2.8K关注 0票数 9

我使用Symfony Flex完成了一个新的Symfony安装,新的骨架属于下一个Symfony 4目录结构。

我添加并配置了第一个第三方包:HWIOAuthBundle。此包用于使用两个秘密信息通过Twitter进行连接。

我在consumer_id文件中声明了我的consumer_secretconsumer_secret

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hwi_oauth:
    firewall_names: [secured_area]
    resource_owners:
        twitter:
            type:          twitter
            client_id:     XXXXXMyIdXXXXX
            client_secret: XXXXXMyTopSecretKeyXXXXX

我的应用程序工作得很好。但是我不能在github上泄露我的秘密!

我想要一个像这样的hwi_oauth.yaml文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hwi_oauth:
    firewall_names: [secured_area]
    resource_owners:
        twitter:
            type:          twitter
            client_id:     '%twitter_consumer_id%'
            client_secret: '%twitter_consumer_secret%'

我读过关于新的Symfony4最佳实践包的DotEnv。

使用环境变量,虽然远不是完美的,但与我们目前所做的工作相比,有许多好处。环境变量是一种更“标准”的方式来管理依赖于环境的设置(例如,不需要管理parameters.yml.dist )。

正如最佳实践中所建议的,我将这两行添加到.env文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TWITTER_CONSUMER_ID=XXXXXMyIdXXXXX
TWITTER_CONSUMER_SECRET=XXXXXMyTopSecretKeyXXXXX

但是我遇到了这个错误:

您已经请求了一个不存在的参数"twitter_consumer_id“。

我试了一下%kernel.twitter_consumer_id%%env.twitter_consumer_id%%env(TWITTER_CONSUMER_ID)%,但没有取得更多的成功。

最后一个测试是返回以下错误消息:

在模板的呈现过程中抛出了一个异常(“没有找到环境变量:”TWITTER_CONSUMER_ID“)。

如何在像hwi_oauth.yaml**?**这样的参数文件中检索ENV变量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-25 12:25:35

您需要在引导过程中加载.env文件,以便这些环境变量可用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(new DotEnv())->load(__DIR__ . '/../.env');

您应该计划将环境变量中的秘密密钥放在开发、暂存和生产中。不过,这要看你怎么做了。在开发和暂存过程中,您可能使用.env文件,而在生产中则使用Apache进行注入。

就我个人而言,我总是使用.env文件,并且在我的存储库中保留一个空白文件。通过这种方式部署起来非常简单,而且没有任何特殊情况。

如果只想在特定环境中使用.env文件,则可以:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (in_array(getenv('APP_ENV'), [ 'dev', 'test' ])) {
    (new DotEnv())->load(__DIR__ . '/../.env');
}
票数 8
EN

Stack Overflow用户

发布于 2017-08-25 13:01:56

对于test环境,我建议还创建一个bootstrap.php脚本来覆盖.env参数:

tests/bootstrap.php:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php

use Symfony\Component\Dotenv\Dotenv;

require_once __DIR__.'/../vendor/autoload.php';

$dotEnv = new Dotenv();
$dotEnv->load(__DIR__.'/../.env');
$dotEnv->populate([
    'APP_ENV' => 'test',
    'DATABASE_URL' => '...'
    // ...
]);

phpunit.xml.dist:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
         bootstrap="tests/bootstrap.php" <--- set
         ...
>
    ...
</phpunit>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45888507

复制
相关文章
WordPress 技巧:获取上下篇日志的链接、标题、特色图像
我们知道 WordPress 官方提供了 previous_post_link()与 next_post_link() 这两个函数标签来制定当前文章所属分类里面的上下篇文章,但是如果要获取上下篇文章的其他参数,比如链接、标题、特色图像,实现下图的效果:我们该如何处理呢?
Denis
2023/04/14
5730
WordPress 技巧:获取上下篇日志的链接、标题、特色图像
js获取当前时间的方法_c获取当前时间毫秒
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
21.3K0
js获取当前时间的方法_c获取当前时间毫秒
python获取当前系统的日期_python怎么获取当前系统时间
python获取当前系统时间,包括年月日,时分秒,主要通过Python中的datetime模块来实现。
全栈程序员站长
2022/11/02
6.3K0
python获取当前系统的日期_python怎么获取当前系统时间
利用TensorFlow生成图像标题
图像标题生成器模型结合了计算机视觉和机器翻译的最新进展,利用神经网络生成现实的 图像标题。神经图像标题模型被训练,以最大限度地产生给定输入图像的字幕的可能性。并且可以用来生成新的图像描述。例如,下面是
AiTechYun
2018/03/02
2K0
利用TensorFlow生成图像标题
javascript获取当前系统时间代码_获取当前系统时间
大家好,又见面了,我是你们的朋友全栈君。 JavaScript 获取当前时间time 开发常用时间笔记 JS获取当前时间 Js获取当前日期时间及其它操作 ** 谨记要懂得经常在控制台输出结果 **
全栈程序员站长
2022/11/09
18.5K0
java获取当前时间到毫秒_java获取当前时间毫秒
()为获取当前系统时间,也可使用当前时间戳 获取时间戳三种方法执行效率比较: import java.util.Calendar; import java.util.Date; public class TimeTest { ……
全栈程序员站长
2022/10/04
7.2K0
获取当前jvm数据
获取当前jvm数据 import java.io.InputStreamReader; import java.io.LineNumberReader; import java.lang.management.ManagementFactory; import org.apache.log4j.Logger; import com.sun.management.OperatingSystemMXBean; public class MonitorUtil { private static fi
JQ实验室
2022/02/14
1.8K0
python 获取当前时间
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。
用户7886150
2021/01/19
4.1K0
ViewPager获取当前显示的View[通俗易懂]
思路:根据vp.getCurrentItem一级vp的child数,可算出当前child在vp中的index。但是此时还不能直接用vp.getChildAt获取,因为getChildAt对应的index不一定 为vp中child实际的排列顺序(左右拖动时,打log即可验证)。此时可根据各child的x值重新排序,再用vp.getChildAt即可。
全栈程序员站长
2022/09/15
1.6K0
java获取当前学期
获取当期学期 NumUtils //继承NumberUtils类 public class NumUtils extends NumberUtils { //把string的数字转化成int public static int obj2int(Object obj) { if (obj != null) { return (int)(toDouble(obj.toString())); } return 0; } //把BigDecimal转成double,保留几位小数 publi
微醺
2019/08/14
1.6K0
Android 获取当前时间
在项目开发中,难免会遇到使用当前时间,比如实现网络请求上传报文、预约、日历等功能。
网罗开发
2021/01/29
4.1K0
Blazor 获取当前的 Url 链接
在 Blazor 获取当前页面所在的 URL 链接可以通过 NavigationManager 类辅助获取,也可以通过此方法获取当前域名等信息
林德熙
2022/08/12
3.6K0
js获取当前域名
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112873.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
20.6K0
ViewPager 获取当前显示的Fragment
Viewpager 获取当前显示的fragment 使用 getSupportFragmentManager().findFragmentByTag()方法 Viewpager + FragmentPagerAdapter 情况下 才好使; FragmentPagerAdapter 有一个特点 凡是加载过的Fragment 都会被保留,既然Fragment不会被销毁,那我们就可以使用findFragmentByTag() 方法找到它;但问题是动态创建的话 tag的设置;我们知道动态加载时是可以设置tag的,
佛系编码
2018/05/22
3.7K0
java 获取到当前系统的年份,只是当前的年份
第一个方法 public static String getSysYear() { Calendar date = Calendar.getInstance(); String year = String.valueOf(date.get(Calendar.YEAR)); return year; } 第二个方法 public static String getCurrentYear(){ SimpleDateFormat sdf = new
一写代码就开心
2020/11/20
2.3K0
获取当前时间的时间戳
不懂time模块或其他内置模块的小朋友可以参考我这篇博客:python 内置模块
HammerZe
2022/05/09
8K0
获取当前时间的时间戳
mysql 获取当前的时间戳
三者基本没有区别,稍微一点的区别在于:NOW(),CURRENT_TIMESTAMP()都表示SQL开始执行的时间;SYSDATE()表示执行此SQL时的当前时间
全栈程序员站长
2022/11/10
8.2K0
mysql 获取当前的时间戳
php 获取当前用户的IP
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120514.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/15
2.6K0
获取当前url地址
<?php //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br />"; //获取网页地址 echo $_SERVER['PHP_SELF']."<br />";
九霄道长
2021/03/02
3.9K0
python 基础 —— 获取当前时间的
In [1]: import time In [2]: time.time() Out[2]: 1494902382.2486684 In [3]: int(time.time()) Out[3]: 1494902387
py3study
2020/01/06
7270

相似问题

如何去除"CardView“android的额外填充

20

如何删除cardview填充?

17

CardView中顶部和底部的额外填充

13

从cardview中删除额外空间

30

DrawerLayout内部的CardView

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文