[英]PHP, getenv() ignores trailing space
我在.env文件中有一个带尾随空格的变量(是必需的)。 但是,函数getenv()
不会返回带有尾随空格的字符串,而是对其进行修剪。
该变量如下所示:
KEY="blabla. "
有什么解决方法吗?
为了补充cbaconnier的正确答案,这里有更多信息。 PHP的getenv()
函数 不会修剪值:
$ FOO='bar ' php -r 'echo getenv("FOO") . "EOL";'
bar EOL
如果项目(或其运行的框架)使用流行的PHP dotenv库从文件中加载环境变量,请注意,该库当前在从文件中加载环境变量值时会修剪它们。 启用此行为配置的请求请求从未合并。
为了更安全地替代str_replace()
,请在值周围使用嵌套引号,然后对引号进行trim()
:
FOO="'bar '"
$foo = trim(getenv('FOO'), "'");
如果环境变量值包含传递给str_replace()
的搜索字符串str_replace()
除了值末尾),则该方法避免了破坏环境变量值的风险。
正如我在评论中回答的那样,您可以通过使用不需要的另一个字符来愚蠢地实现该目标,然后替换它:
.env文件:
KEY="blabla.%20"
config.php文件
$key = str_replace('%20', ' ', getenv('KEY'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.