【问题标题】:Unable to use environment variables in Lua code无法在 Lua 代码中使用环境变量
【发布时间】:2017-06-07 14:12:50
【问题描述】:

我有一些 Lua 代码,在我的 openresty nginx.conf 文件中使用。这个 Lua 代码包含这样的行:

...
local secret = os.getenv("PATH")
assert(secret ~= nil, "Environment variable PATH not set")
...

出于测试原因,我尝试检查是否设置了 PATH 变量,并且由于某种原因,断言语句没有通过。我在控制台中看到:

环境变量 PATH 未设置

但是,当我运行它时

$ echo $PATH

我明白了,这个变量确实有一些价值。那么,这有什么问题,我该如何解决呢?

【问题讨论】:

    标签: nginx lua openresty


    【解决方案1】:

    你需要告诉 nginx 让环境变量可用。来自docs for the env directive:“默认情况下,nginx 会删除从其父进程继承的所有环境变量,除了 TZ 变量。该指令允许保留一些继承的变量、更改它们的值或创建新的环境变量。”

    因此,在您的情况下,您需要在 nginx.conf 中指定 env PATH;

    【讨论】:

    • @Jacobian,如果它对您有用,您可能希望接受答案。
    • 是的,当然!谢谢你,先生!
    • "你需要在 nginx.conf 中指定环境路径;"。你能举个例子吗?我还应该指定路径吗?还是只添加“env PATH”?谢谢。
    • 对;这就是你需要添加到 nginx.conf 中的全部命令。
    • @PaulKulchenko 嗨,我遇到了同样的问题。我定义了一个新的环境变量“export SECRET=mySecret”,并在 nginx.conf 中指定了 env SECRET;但是当调用它时,似乎什么都不存在。只有当我指定一个已经存在的环境变量时,调用它才会打印出正确的值。我开了个贴,可以的话请看一下:stackoverflow.com/questions/66518718/…
    猜你喜欢
    • 2021-02-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2012-04-16
    • 2017-08-11
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    相关资源
    最近更新 更多