当前位置: 首页 > 知识库问答 >
问题:

API平台无法识别真实的环境变量

方德宇
2023-03-14

我设置了一个全新的skeleton Symfony项目,并添加了API平台包。我用make:entity创建了一个实体,创建了一个迁移,能够成功执行迁移,现在可以看到数据库中的表。

从API swagger文档页面(并通过我的本地终端中的curl请求),尝试对所有实体资源执行基本GET请求失败。该错误似乎是API使用来自的DATABASE\u URL导致的。env文件,而不是作为实际环境变量存在的DATABASE\u URL。这很容易看出。env文件使用MySQL,而我的实际环境变量使用PostgreSQL。

执行printenv显示正确的值,bin/控制台调试:容器--env-vars显示正确的值,并且清楚地Doctrine识别正确的环境变量,因为迁移执行成功。

此外,如果我从. env文件中删除DATABASE_URL行,简单地尝试加载API会导致500错误,说明找不到环境变量:"DATABASE_URL"。

是什么导致API平台忽略了我的环境变量,而Symfony和Doctrine很好地识别了它?

共有1个答案

吕胤
2023-03-14

这是docker配置中的一个问题。当使用s6 overlay作为过程主管时,服务。运行PHP的d文件需要使用带有contenv的helper,以使环境变量可用。

更换

#!/usr/bin/execlineb -P
php-fpm -R --nodaemonize

具有

#!/usr/bin/with-contenv sh
exec php-fpm -R --nodaemonize

允许PHP查看docker compose文件中设置的环境变量,API平台开始按预期返回结果。

 类似资料:
  • 不能将“virtualenv”识别为内部或外部命令、可操作程序或批处理文件。 我正在遵循的步骤 在默认目录下安装-pip安装virtualenv 要创建一个venv,请运行此virtualenv-p python3 venv 激活virtualenv\Scripts\Activate 它看起来像这样(venv)

  • 然而,IntelliJ IDEA抱怨“无法解析符号'env.my_var'”

  • 我正在使用windows并在Ruby on Rails中使用命令提示符。使用随EnterpriseDB安装程序一起安装的PostgreSQL 9.2。

  • 问题内容: 对于Windows,我的Node脚本应如下所示: 但是在Linux上没有,所以会像这样: 有没有办法以一致且跨平台的方式声明环境变量? 问题答案: 我最近遇到了跨环境项目。这很简单 这会将环境变量设置为,而不管操作系统是什么。

  • 问题内容: 有没有办法使用python以平台独立的方式修改环境变量? 类似于? 问题答案: 您应该能够进行修改。 由于是分隔不同路径的字符,因此应使用此字符追加每个新路径: 或者,如果要在列表中添加多个路径: 如前所述,在必须从单独的部分构造路径的情况下,也可以用于必须附加的每个路径。

  • 我试图在Ubuntu64bit(vm)的最新版本中运行一个类似的hadoop集群: 这是我得到的输出: 第390行: 为什么我会收到这条信息?/usr/lib/jvm/java-6-sun/bin/java:没有这样的文件或目录