라라벨을 아시는 분은 위 부분을 참고하시고, 모르신다면 구분선 바로 아래로 가세요.
.env의 모든 항목에 대한 예는 다음과 같습니다.
이 "my"로 변경되면
이 "I"로 변경되면 env 함수를 사용하여 정상적으로 값을 얻을 수 있습니다. env 함수를 사용하면 정상적으로 값을 얻을 수 없습니다.
<code>MAIL_DRIVER=我 var_dump(env(MAIL_DRIVER'')); // NULL MAIL_DRIVER=我的 var_dump(env(MAIL_DRIVER'')); // 我的</code>
이것은 "good"과 같은 다른 중국어 단어에서도 발생합니다.
저는 env 함수 소스 코드를 연구했습니다.
제가 발견한 문제는 다음과 같습니다. ;
- --------------이해하고 하지 마세요. Laravel 프레임워크의 구분선 이해-------------------------------------------- --- -----
<code>putenv("PROJECT_NAME=我的"); phpinfo();</code>
phpinfo의 환경에서 PROJECT_NAME
을 검색할 수 있습니다.<code>putenv("PROJECT_NAME=我"); phpinfo();</code>
PROJECT_NAME을 phpinfo의 환경에서 찾을 수 없습니다
친애하는 친구 여러분, 왜 그런지 말해주세요. 문제없이 중국어 값을 설정하는 방법은 무엇입니까?
라라벨을 아시는 분은 위 부분을 참고하시고, 모르신다면 구분선 바로 아래로 가세요.
.env의 모든 항목에 대한 예는 다음과 같습니다.
이 "my"로 변경되면
이 "I"로 변경되면 env 함수를 사용하여 정상적으로 값을 얻을 수 있습니다. env 함수를 사용하면 정상적으로 값을 얻을 수 없습니다.
<code>MAIL_DRIVER=我 var_dump(env(MAIL_DRIVER'')); // NULL MAIL_DRIVER=我的 var_dump(env(MAIL_DRIVER'')); // 我的</code>
이것은 "good"과 같은 다른 중국어 단어에서도 발생합니다.
저는 env 함수 소스 코드를 연구했습니다.
제가 발견한 문제는 다음과 같습니다. ;
- --------------이해하고 하지 마세요. Laravel 프레임워크의 구분선 이해-------------------------------------------- --- -----
<code>putenv("PROJECT_NAME=我的"); phpinfo();</code>
phpinfo의 환경에서 PROJECT_NAME
을 검색할 수 있습니다.<code>putenv("PROJECT_NAME=我"); phpinfo();</code>
PROJECT_NAME을 phpinfo의 환경에서 찾을 수 없습니다
친애하는 친구 여러분, 왜 그런지 말해주세요. 문제없이 중국어 값을 설정하는 방법은 무엇입니까?
저도 시도해 본 결과 CGI 환경(4바이트, 일본어 가나의 경우에도 마찬가지)에서 putenv('PROJECT_NAME=掉')
등을 호출하면 실패하고 false
을 반환하지만 CLI 환경에서는 문제 없습니다:
<code>➜ ~ $ php -r "var_dump(putenv('PROJECT_NAME=我')); echo getenv('PROJECT_NAME');" bool(true) 我 </code>
저도 Google에서 검색해봐도 비슷한 상황을 찾을 수 없어서 꽤 혼란스럽습니다. 다른 분들도 좋은 답변을 얻으셨으면 좋겠습니다.
그러나 질문자는 Laravel을 사용하고 putenv
에 대해 특별히 신경쓰지 않고 단지 .env
의 값을 원활하게 얻고자 하므로 몇 가지 팁을 사용할 수 있습니다.
이 기능을 자신의 프로젝트의 helpers.php
에 추가하세요(또는 사용자 정의 도우미 기능이 배치된 다른 장소, 그렇지 않은 경우 새 기능을 만드세요):
<code>if (! function_exists('menv')) { /** * Gets the value of an environment variable by getenv() or $_ENV. * * @param string $key * @param mixed $default * @return mixed */ function menv($key, $default = null) { if (function_exists('putenv') && function_exists('getenv')) { // try to read by getenv() $value = getenv($key); if ($value === false) { return value($default); } } else { // try to read from $_ENV or $_SERVER if (isset($_ENV[$key])) { $value = $_ENV[$key]; } elseif (isset($_SERVER[$key])) { $value = $_SERVER[$key]; } else { return value($default); } } switch (strtolower($value)) { case 'true': case '(true)': return true; case 'false': case '(false)': return false; case 'empty': case '(empty)': return ''; case 'null': case '(null)': return; } if (strlen($value) > 1 && Str::startsWith($value, '"') && Str::endsWith($value, '"')) { return substr($value, 1, -1); } return $value; } }</code>
환경 변수를 얻는 새로운 기능을 사용자 정의하고 config/
디렉터리의 모든 env
을 menv
으로 바꿉니다. ($_ENV
을 시도했지만 $_SERVER
쓰기에는 영향을 미치지 않습니다. Impact)
참고하시면 됩니다. 일부 사용자가 사용하지 못하도록 방지하기 위해 이렇게 한 것입니다putenv