我在 .env 文件中有一个带有尾随空格的变量(是的,它是必需的)。但是,函数getenv()
不会返回带有尾随空格的字符串,而是修剪它。
变量如下所示:
KEY="blabla. "
有解决方法吗?
答案 0 :(得分:2)
为了补充cbaconnier的正确答案,这里有更多信息。 PHP的getenv()
function 没有修剪值:
$ FOO='bar ' php -r 'echo getenv("FOO") . "EOL";'
bar EOL
如果项目(或其运行的框架)使用流行的PHP dotenv库从文件加载环境变量,请注意,当加载时,此库当前会修剪环境变量值他们来自一个文件。从未合并允许配置此行为的pull request。
要获得str_replace()
的更安全的替代方法,请在值周围使用嵌套引号,然后使用trim()
引号:
FOO="'bar '"
$foo = trim(getenv('FOO'), "'");
如果此方法包含在值的末尾传递给str_replace()
的搜索字符串,则此方法可避免损坏环境变量值的风险。
答案 1 :(得分:1)
正如我在评论中所说,你可以通过使用另一个你不需要的角色以愚蠢的方式实现这一点,然后将其替换:
.env文件:
KEY="blabla.%20"
的config.php
$key = str_replace('%20', ' ', getenv('KEY'));