symfony 如何从.env变量处理%kernel.project_dir%?

xjreopfe  于 2023-10-23  发布在  其他
关注(0)|答案(3)|浏览(95)

我在.env中添加了以下内容:

PHOTOS_DIR=%kernel.project_dir%/var/photos

当然,当我试图检索$_ENV['PHOTOS_DIR']的值时,我得到了原始字符串%kernel.project_dir%/var/photos
但是我怎样才能得到Symfony配置处理器处理的值,例如/my/project/var/photos

  • 编辑 *:我知道在services.yaml中添加这个是很简单的:
parameters:
    photos_dir: '%kernel.project_dir%/var/photos'

但是我想在.env文件中保留重要的配置数据。

brqmpdu1

brqmpdu11#

为了扩展%kernel.project_dir%,在参数中使用%env(resolve:...)%,例如:

parameters:
    photos_dir: '%env(resolve:PHOTOS_DIR)%'
7kjnsjlb

7kjnsjlb2#

您的dotenv不处理symfony yaml处理器参数。
从.env文件中删除%kernel.project_dir%,然后在.yaml中绑定一个参数,如下所示:

photos_absolute_path: '%kernel.project_dir%%env(PHOTOS_DIR)%'

之后,您可以通过名称photos_absolute_path从容器中获取参数,它将指向正确的位置

lf5gs5x2

lf5gs5x23#

在. env文件中使用symfony参数是正确的。Symfony将自动解析它们。
容器编译后,如果将其绑定到参数. .env,则可以获得真实的值

PHOTOS_DIR=%kernel.project_dir%/var/photos

services.yaml:

parameters:
    photos_dir: '%env(PHOTOS_DIR)%'

在你的应用程序中:

$container->getParameter('photos_dir');

相关问题