Symfony 4 Dotenv 转义特殊字符

Symfony 4 Dotenv escape special characters

我使用带有特殊字符和 symfony 的密码 return 错误 "Malformed parameter "url"."

我该如何使用这种密码? foo?bar

我尝试使用这样的变量

DATABASE_USER='foo'
DATABASE_PASSWORD='foo?bar'
DATABASE_URL=mysql://${DATABASE_USER}:${DATABASE_PASSWORD}@100.100.100.100:3306/db

但是不工作

如变量名所示,DATABASE_URL 必须是 URL。也就是说,所有在 URL 中有意义的字符(例如 #?:、...)都必须是 URL -编码。

例如 ? 必须编码为 %3F 如果它应该以不同于标记查询的含义出现。有很多在线工具可以URL-编码东西...

使用通过urlencode()或在线编码url的密码:

(例如:ZZ?*?daWm => ZZ%3F%2A%3FdaWm

完整数据库 url 参数应为:

DATABASE_URL=mysql://test_user:ZZ%3F%2A%3FdaWm@127.0.0.1:3306/test_db

然后去./app/config/packages/doctrine.yaml

我有 url 个带有解析前缀的参数:

doctrine:
    dbal:
        # (....)
        url: '%env(resolve:DATABASE_URL)%'

只需删除修复问题的前缀 'resolve', 修改后:

doctrine:
    dbal:
        # (....)
        url: '%env(DATABASE_URL)%'