鍍金池/ 問答/PHP/ laravel env 文件 APP_NAME 中文錯(cuò)誤

laravel env 文件 APP_NAME 中文錯(cuò)誤

  1. 當(dāng)設(shè)置中文為奇數(shù)個(gè)數(shù)時(shí),,能正常讀取,,設(shè)置為偶數(shù)個(gè)數(shù)時(shí)讀取不到設(shè)置的值,結(jié)果為默認(rèn)的laravel

    clipboard.png

clipboard.png

clipboard.png

clipboard.png

回答
編輯回答
不討囍

不知道你是怎么讀取 APP_NAME 的,我是這么讀取的:

// $appName = env('APP_NAME');
$appName = getenv('APP_NAME');
echo $appName;

006tKfTcgy1fl5v2bdbwxj305q027mx2.jpg

2018年1月21日 15:57
編輯回答
枕頭人

加引號(hào)把它括起來試試

2018年6月21日 00:48
編輯回答
櫻花霓

樓主,你可能是世界上第二個(gè)發(fā)現(xiàn)這個(gè)詭異情況的人。第一個(gè)是我。

解決辦法我也不知道。

2017年9月16日 14:38
編輯回答
乖乖瀦

首先恭喜你,找到了一個(gè)php里的bug,我php版本5.6.14
當(dāng)看到這個(gè)問題的時(shí)候,有點(diǎn)不相信,但是自己按照你的方式嘗試了下,確實(shí)比較驚訝,
剛開始以為laravel 框架的問題,后來經(jīng)過斷點(diǎn)調(diào)試了,查找到了原因。
\vendor\laravel\framework\src\Illuminate\Support\helpers.php 約561行 執(zhí)行g(shù)etenv函數(shù)時(shí),$value 是返回的false 所以563行的判斷成立,返回默認(rèn)的laravel字符串。
后來自己寫了個(gè)demo,也是這樣的問題。
.env 文件內(nèi)容

a=中文
b=xx
c=ww
$content = file_get_contents(__DIR__.'/.env');
$lens = explode("\n",$content);
foreach ($lens as $len) {

    putenv($len);
}
echo getenv('a')."\n";
echo getenv('b')."\n";
echo getenv('c')."\n";

最后結(jié)果當(dāng)然是和題主問說的是一樣的,設(shè)置中文為奇數(shù)個(gè)數(shù)時(shí)能正常讀取設(shè)置為偶數(shù)個(gè)數(shù)時(shí)讀取不到設(shè)置的值

以上是在win環(huán)境下,
順便在linux 測(cè)試下,
linux 環(huán)境倒沒有任何問題,但是會(huì)出現(xiàn)警告(不知道什么鬼)

PHP Warning:  putenv(): Invalid parameter syntax
2017年3月30日 12:38