PHP의 DOTENV
그러나 이것은 코드에 액세스할 수 있는 모든 사람이 데이터를 볼 수 있기 때문에 첫 번째로 보안 측면에서 큰 문제이며 두 번째로 프로덕션 등과 같은 환경을 변경할 때마다 복잡해집니다.
그리고 이를 해결하기 위해
.env
가 나왔습니다. 여기서 Linux 환경에 대한 점(점)은 파일을 숨긴 상태로 두는 것이며 env라는 이름은 environment의 약어입니다.더 잘 이해하기 위해 실제로 살펴보겠습니다.
암호
먼저 환경 변수에 있는 값과 사용할 수 있는 값
getenv()
을 확인합니다.<?php
print_r(getenv());
💡 참고: 자세한 내용은 documentation
새 값을 생성하려면
putenv()
를 사용해야 합니다.<?php
putenv("TEST=test");
우리가 사용하는 값을 표시하기 위해
<?php
echo getenv("TEST");
💡 참고: 환경 변수 이름을 대문자로 지정하는 것이 좋습니다.
getenv 외에도 $_ENV도 있습니다.
$_ENV는 각각의 키가 해당 값을 가리키는 환경 변수인 연관 배열입니다. 문제는
php.ini
구성에 따라 로드되지 않을 수 있다는 것입니다. 이를 활성화하려면 "variables_order"지시문에 "E"옵션을 넣으십시오. 여기서 각 문자는 로드할 완전 전역을 나타냅니다.그리고 우리가 사용하는 값을 표시하기 위해
<?php
echo $_ENV['APP_ENV'];
이제 우리는 변수가 어디에 있는지, 더 만드는 방법과 하나만 호출하는 방법을 알았으므로 php가
.env
파일에서 값을 읽고 php 내부의 환경 변수에 저장하도록 합시다.DOTENV
먼저
.env
파일을 생성합니다.touch .env
내부에 원하는 값을 입력합니다. 이 예에서는 두 개의 변수를 입력합니다.
APP_NAME=Project
APP_ENV=local
PHP 클래스
먼저 클래스를 생성하자
<?php
namespace App\Controller;
class DotEnvEnvironment
{
public function load($path): void
{
$lines = file($path . '/.env');
foreach ($lines as $line) {
[$key, $value] = explode('=', $line, 2);
$key = trim($key);
$value = trim($value);
putenv(sprintf('%s=%s', $key, $value));
$_ENV[$key] = $value;
$_SERVER[$key] = $value;
}
}
}
이제 그냥 사용
<?php
require __DIR__ . '/../vendor/autoload.php';
(new App\Controller\DotEnvEnvironment)->load(__DIR__ . '/../');
echo getenv('APP_ENV');
echo $_ENV['APP_NAME'];
.gitignore
코드에서
.env
를 서버로 보내지 마십시오. .env
의 목적은 민감한 정보를 코드에서 분리하여 여전히 서버로 보내도 문제가 되지 않기 때문입니다. .gitignore
파일에 대한 값입니다..env
팀으로 개발하는 경우 프로젝트를 사용하는 사람들이 수행해야 할 작업을 이해할 수 있도록
.env.example
파일을 포함하고 가상 값을 추가할 수 있습니다.DATABASE=database-name
PASSWORD=your-password-here
팁
환경마다 다른
.env
파일을 사용할 수 있으므로 스테이징용으로 .env.staging
, 프로덕션용으로 .env.production
, 테스트용으로 .env.testing
등을 사용할 수 있습니다.도서관
.env
로드되는 파일을 생성하는 방법을 보여 주었음에도 불구하고 이것이 최선의 솔루션이라고 생각하지 않습니다. 라이브러리가 이미 준비되어 있고 더 견고하며 훨씬 더 많은 테스트를 거쳤기 때문에 어떻게 작동하는지 궁금하다면 , 계속해서 직접 만들지만 전문적인 프로젝트에서 만들거나 사용하려면 vlucas/phpdotenv 라이브러리를 권장합니다. 라라벨 프레임워크 자체가 사용할 정도로 우수하므로 사용 방법을 보여 드리겠습니다.💡 참고: symfony/dotenv은 Symfony 프레임워크에서 사용되며 가끔 저도 사용합니다.
먼저 작곡가에 추가
composer require vlucas/phpdotenv
이제
.env
파일을 생성합니다.APP_NAME=Project
APP_ENV=local
이제 파일을 로드합니다.
<?php
require __DIR__ . '/../vendor/autoload.php';
Dotenv\Dotenv::createUnsafeImmutable(__DIR__ . '/../')->load();
echo getenv('APP_ENV');
echo $_ENV['APP_NAME'];
간단합니다. 몇 줄만 있으면 이미 프로젝트가 구성되어 있습니다.
읽어 주셔서 감사합니다!
질문, 불만 사항 또는 팁이 있는 경우 여기에 의견을 남길 수 있습니다. 기꺼이 답변해 드리겠습니다!
😊😊 만나요! 😊😊
지원 해줘
Github - WalterNascimentoBarroso
Codepen - WalterNascimentoBarroso
Reference
이 문제에 관하여(PHP의 DOTENV), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/walternascimentobarroso/dotenv-in-php-45mn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)