PHP,getenv()忽略尾随空格

时间:2017-11-20 16:11:00

标签: php environment-variables

我在 .env 文件中有一个带有尾随空格的变量(是的,它是必需的)。但是,函数getenv()不会返回带有尾随空格的字符串,而是修剪它。

变量如下所示:

KEY="blabla. " 

有解决方法吗?

2 个答案:

答案 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'));