Laravel은 변경 후 .env 파일을 읽지 않습니다.

Laravel Is Not Reading



문제

이것은 새로운 Laravel 개발자들 사이에서 나타나는 상당히 일반적인 문제입니다.

많은 사람들이 응용 프로그램을 새로 고칠 때 .env 구성 값이 표시되지 않는 것을 확인하기 위해 .env 파일을 업데이트하려고 했습니다.







그리고 더 흥미로운 점은 Laravel 버전을 업그레이드한 후에 자주 표시된다는 것입니다.



예를 들어 .env 파일에 다음과 같은 파일이 있습니다.



DB_DATABASE=라라벨디비
DB_USERNAME=라라벨유저

그러면 자연스럽게 config/database.php 파일 내부에 다음과 같이 됩니다.





'mysql'=> [
' 데이터 베이스 '=>환경('DB_DATABASE','대퇴골'),
'사용자 이름'=>환경('DB_USERNAME','대퇴골'),
]

여기서 forge는 기본값을 나타냅니다. 이는 귀하가 귀하의 DB_DATABASE 그리고 DB_USERNAME .env 파일 내의 값. 이 정보가 조금 있으면 도움이 될 것입니다.

이제 이 특정 문제가 있음을 알 수 있는 방법은 다음 예외가 발생하는 경우입니다.



PDO 예외: SQLSTATE[HY000] [1045]에 대한 액세스가 거부되었습니다. 사용자 'lar'@'localhost'
( 사용 비밀번호 : 아니요 )

이것은 Laravel 애플리케이션이 기본 값을 가져오고 있음을 분명히 보여줍니다. 설정/데이터베이스.php 파일이 아니라 .env .

다른 작업을 수행하기 전에 php artisan tinker를 사용하여 이 문제를 확인할 수도 있습니다.

>>>환경('DB_DATABASE')
=> 없는
>>>getenv('DB_DATABASE')
=> 거짓
>>>구성(' 데이터 베이스 .connections.mysql. 데이터 베이스 ')
=>대퇴골
>>>dd($ _ENV)
[]

다음 작업을 수행해도 차이가 없음을 종종 볼 수 있습니다. 그러나 개발자는 완전히 새로운 Laravel 설치를 실행하고 이전 앱 폴더를 복사하여 구성을 테스트하려고 합니다. 그들은 작곡가 패키지 설치를 실행하거나 다른 작업을 수행하지 않습니다.

Linux를 사용하지 않는 한(나중에 그 이유를 알려 드리겠습니다), 변경 사항이 표시되지 않습니다.

해결책

항상 그렇듯이 이 문제를 해결하기 위해 할 수 있는 일이 많이 있지만 그 중 몇 가지는 성공할 가능성이 더 큽니다.

구성 캐시 지우기

우선, 그렇지 않은 경우 다른 작업을 수행하기 전에 구성 캐시를 지워야 합니다.

우리 코드는 요즘 너무 많은 라이브러리를 사용하기 때문에 런타임 중에 빠르게 액세스할 수 있도록 캐시해야 합니다.

개인적으로 Windows와 Mac에서 이 문제가 있었지만 Linux(Ubuntu)에서 어떤 이유로 인해 이러한 구성 파일이 일종의 후크로 지워지거나 전혀 캐시되지 않는다는 것을 알았습니다. 다음을 수행하지 않고 새 .env 값으로 애플리케이션을 다시 로드합니다.

다음 명령을 실행하여 구성 캐시를 지워야 합니다.

PHP 장인 구성:은닉처
PHP 장인 구성:분명한

.env 파일 내 빈 공간 확인

바로 다음 솔루션은 .env 파일 내부에 공백을 갖는 것입니다. 그리고 이것은 대부분의 사람들이 실패하고 머리를 자르기 시작하는 경우입니다.

이것을 놓치는 것은 매우 쉽지만 예를 들어 .env 파일에 포함될 수 있는 내용은 다음과 같습니다.

사이트 이름=내 라라벨 애플리케이션

공백은 .env 파일을 손상시키므로 이것만으로는 작동하지 않습니다.

당신이해야 할 일은 다음과 같이 따옴표 안에 값을 감싸는 것입니다.

사이트 이름=내 라라벨 애플리케이션

이번에는 모든 것이 잘 작동해야 합니다.

변경할 때마다 구성 캐시를 지우십시오. 이전과 동일하게 수행할 수 있습니다.

PHP 장인 구성:은닉처
PHP 장인 구성:분명한