[英]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.