Laravel 5.2가 env 파일을 읽지 않음


110

Laravel 5.2로 업그레이드 한 후 .env파일 값이 읽혀지지 않습니다. 업그레이드 지침을 따랐습니다 . auth.php를 제외하고는 내 구성 파일이 변경되지 않았습니다. 이전 버전 5.1.19에서는 모두 잘 작동했습니다.

.env 다음과 같은 값을 포함합니다.

DB_DATABASE=mydb
DB_USERNAME=myuser

config/database.php 포함

'mysql' => [
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
]

이 오류가 발생합니다.

PDOException: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)

분명히 내 환경 구성을 가져 오지 않습니다. 이것은 bugsnag와 같은 타사를 포함하여 내 구성 파일의 모든 단일 파일에 영향을 미칩니다.

나는 또한 시도했다

php artisan config:clear
php artisan cache:clear

최신 정보

견딜 수 없는 php artisan tinker

>>> env('DB_DATABASE')
=> null
>>> getenv('DB_DATABASE')
=> false
>>> config('database.connections.mysql.database')
=> "forge"
>>> dd($_ENV)
[]

Laravel 5.2의 새 복사본을 설치해 보았습니다. 기본적으로 내 app폴더 에만 복사했습니다 . 추가 작곡가 패키지는 포함되어 있지 않습니다. 여전히 같은 문제가 있습니다. 잘 작동하는 동일한 서버에 다른 Laravel 5.2 프로젝트가 있습니다.


1
.env 파일의 이름이 .env로 지정되어 있습니까? .env.example이 아닙니까?
James Elliott

Andrew가 forge 인터페이스로 .env 파일을 편집하거나 업로드 중입니까?
Mark Davidson

@JamesElliott 맞아요.env
andrewtweber

1
아니면 이것을 로컬에서 실행하고 있습니까? 장인 서비스로 달리는 경우 그럴 수있는 경우를 대비하여 다시 시작해야합니다.
Mark Davidson

@MarkDavidson 명령 줄에서 VI를 통해 편집 없으며 그것은 전체 서버에의
andrewtweber

답변:


91

공식 Laravel 5.2 업그레이드 노트에서 :

config:cache배포 중에 명령을 사용하는 경우 응용 프로그램의 다른 곳이 아닌 구성 파일 내 에서만 함수를 호출하는지 확인 해야합니다env .

env애플리케이션 내에서 호출하는 경우 적절한 구성 값을 구성 파일에 추가하고 env대신 해당 위치 env에서 config호출 하여 호출을 호출 로 변환 할 수 있도록 하는 것이 좋습니다 .

참조 : https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0


36
php artisan config:cache나를 위해 해결했습니다. 심지어 php artisan config:clear- 감사합니다!
kair

36
Laravel 5.3은 php artisan config:clear나를 위해 일한 유일한 일
페온

9
Laravel 5.4-VPS에 배포 : php artisan config:clear나를 위해 일했습니다. 전에 config : cache를하지 않았기 때문에 캐시를 지워야하는 것이 조금 이상해 보였습니다.
Antonio


당신이 편집하고 있는지 확인 .env하는 대신 .env.example파일
코너 거머리

84

귀하의 경우 .env변수가 공백을 포함, 당신은 큰 따옴표를 포장해야합니다. 예를 들면 :

SITE_NAME="My website"

테스트하기 전에 캐시를 지우는 것을 잊지 마십시오.

php artisan config:cache
php artisan config:clear

예 작동합니다. .env파일의 값을 변경 한 후 php artisan config:cache & php artisan config:clear명령을 실행하십시오 . 작동합니다.
Chandan Sharma

41

와. 맙소사. 따옴표로 묶지 않고 공백이있는 env 값이 있기 때문입니다.

SITE_NAME=My website

이것으로 변경

SITE_NAME="My website"

고쳤다. 나는 이것이 Laravel 5.2 에서 vlucas / phpdotenv 를 1.1.1에서 2.1.0으로 업그레이드하는 것과 관련 이 있다고 생각합니다.


같은 생각-공백은 .env5.1에서와 같이 5.2에서 문제를 일으키는 것처럼 보입니다 .
thomthom

5
그리고 이것은 Laravel의 (많은) 버그 베어 중 하나입니다. 때때로 다양한 구성 및 / 또는 기타 유형의 오류를 조용히 무시하고 받아들이는 습관이 있으며, 아무 것도 잘못되었다는 표시가 없습니다. 감안할 때 이것은의 "기능" phpdotenv일 수 있지만, Laravel은 여전히 .env포함해야하는 파일이 있고 성공적이지 않았 음을 알고 있지만 아무에게도 말하지 않습니다.
dKen 2014

2
나는 이미 어리석은 일에 몇 시간을 낭비했습니다. 더 많은 낭비를 막아 주셔서 감사합니다!
Jenski

29

나를 위해 다음 순서로 작동했습니다.

php artisan config:cache
php artisan config:clear
php artisan cache:clear

그리고 나는 운없이 모든 나머지를 시도했습니다.


2
이 명령은 디버깅 몇 시간 후에 문제를 해결했습니다.
Minion

내 생명을 구했습니다. Tks. 하지만 이드는 이유를 이해하지 못했다.
Mateus Galasso

이 명령이 저를 구했습니다. 감사합니다
Asad ullah

친절한 인터넷 낯선 사람에게 감사드립니다.
Eduardo

내가이 대답에 올 때마다 1 달러를 받으면 벌써 부자가 될 것입니다. 감사!
Altin

25

비슷한 문제가 있었고 및 명령을 config/services.php사용하여 해결했습니다 .config clearoptimize

php artisan config:clear
php artisan optimize

24

나를 위해 다음이 작동했습니다.

- php artisan config:cache
- php artisan config:clear
- php artisan cache:clear

17

이것을 실행하십시오 :

php artisan config:clear
php artisan cache:clear

그때
php artisan config:cache


11

나는 지역 환경에서 동일한 문제가 있었으며

  1. php artisan config : clear
  2. PHP 장인 설정 : 캐시
  3. 그런 다음 php artisan serve 명령을 취소하고 다시 시작하십시오.

11

다음 권장 사항으로 문제를 해결할 수 있습니다.

권장 사항 1 :

구성 파일을 통해 .env 파일을 사용해야합니다. 즉, 구성 파일 (예 : /config/app.php 또는 /config/database.php)에서 .env 파일을 읽어야하며 구성을 사용할 수 있습니다. 프로젝트의 모든 위치에서 파일.

권장 사항 2 : 큰 따옴표 안에 env 값을 설정하십시오 .

 GOOGLE_CLIENT_ID="887557629-9h6n4ne.apps.googleusercontent.com"
 GOOGLE_CLIENT_SECRET="YT2ev2SpJt_Pa3dit60iFJ"
 GOOGLE_MAP="AIzaSyCK6RWwql0DucT7Sl43w9ma-k8qU"

권장 사항 3 : 구성 또는 환경 값을 변경 한 후 다음 명령 순서를 유지하십시오.

 composer dump-autoload
 composer dump-autoload -o

 php artisan clear-compiled
 php artisan optimize

 php artisan route:clear
 php artisan view:clear

 php artisan cache:clear
 php artisan config:cache
 php artisan config:clear

권장 사항 4 : syntax1이 작동하지 않으면 다른 syntax2를 시도 할 수 있습니다.

   $val1 = env('VARIABLE_NAME');     // syntax1
   $val2 = getenv('VARIABLE_NAME');  // syntax2
   echo 'systax1 value is:'.$val1.' & systax2 value is:'.$val2;

권장 사항 5 : 사용자 수가 많거나 많을서버 구성 에서 관련 메모리 크기를 늘려야 합니다. .

권장 사항 6 : .env 변수를 읽을 때 기본 가능한 값을 설정하십시오.

 $googleClinetId=env("GOOGLE_CLIENT_ID","889159-9h6n95f1e.apps.googleusercontent.com");
 $googleSecretId=env("GOOGLE_CLIENT_ID","YT2evBCt_Pa3dit60iFJ");
 $googleMap=env("GOOGLE_MAP","AIzaSyCK6RUl0T7Sl43w9ma-k8qU");

11

명령 php artisan config:cache을 실행하면 모든 env변수 env()가 지워지고 null 값이 제공됩니다. 다음 명령을 실행하고 env()다시 모든 env변수 를 잡기 시작 합니다.

php artisan config:clear

마법처럼 이것은 나를 위해 일했습니다-훌륭한 대답!
David Partyka

9

업그레이드 지침에서 이것을 놓쳤습니다.

app.php다음과 같은 구성 파일에 env 구성 옵션을 추가하십시오 . 'env' => env('APP_ENV', 'production')

이 줄을 추가하면 로컬 .env파일을 올바르게 읽을 수 있습니다.


1
내 앱이 Laravel 4 였기 때문에 동일한 오류가 발생한 것 같습니다. 그런 다음 5.0으로 업그레이드 한 다음 5.1로 업그레이드했습니다. 아마도이 값을 app.php에 추가하는 것을 놓쳤을 것입니다. 시간을 많이 절약 해주셔서 감사합니다. 여기에 찬성 투표가 있습니다!
브루노 P. 키노시타

8

단순함은 힘입니다.

php artisan config:cache

다음을 받게됩니다.

구성 캐시가 지워졌습니다!

구성이 성공적으로 캐시되었습니다!


6

: port가 로컬 .env에있을 때도 마찬가지입니다.

다시 큰 따옴표가 트릭을 수행합니다.

APP_URL="http://localhost:8000"

그리고

php artisan config:clear


4

또한 @andrewtweber가 제안한 것 외에 따옴표 사이에 있지 않는 한 KEY = 사이에 공백이 없는지 확인하십시오.

.env 파일 예 :

...
SITE_NAME= My website
MAIL_PORT= 587
MAIL_FROM_NAME= websitename
...

에:

...
SITE_NAME="My website"
MAIL_PORT=587
MAIL_FROM_NAME=websitename
...

3

나는 내 지역 에서이 같은 문제에 부딪 쳤고 여기에서 모든 답변을 시도했지만 아무 소용이 없었습니다. 오직이 나를 위해 일한, php artisan config:clear하고 restart server. 매력처럼 작동합니다!


4
@RameshMhetre 시도 php artisan config:cache, php artisan config:clear다음php artisan cache:clear
Dexter Bengil

2

명령을 사용하여 새 키를 생성하는이 문제를 해결했습니다. php artisan key:generate


2

로컬 개발 중에 config : cache를 호출 한 경우 bootstrap / cache / config.php 파일을 삭제하여이 작업을 취소 할 수 있습니다. 그리고 이것은 나를위한 일입니다.


2

로컬 개발 중에 config : cache를 호출 한 경우 bootstrap / cache / config.php 파일을 삭제하여이 작업을 취소 할 수 있습니다. 그리고 이것은 나를위한 일입니다.

@Payal Pandav는 위의 의견을 제공했습니다.

간단한 해결 방법을 말하고 싶습니다. bootstrap / cache / 폴더에서 config.php 파일을 편집하십시오. 그리고 자격 증명을 변경하십시오. 이것은 나를 위해 일했습니다. 프로덕션 환경의 다른 중요한 데이터가 포함되어있을 수 있으므로이 파일을 삭제하지 마십시오.


2

제 경우에는 laravel 5.7 env('APP_URL')이 작동하지 않지만 config('app.url')작동합니다. env구성 에 새 변수를 추가하면 작동하지 않지만 php artisan config:cache시작 후에 는 작동합니다.


3
개발 환경에있는 경우 구성 및 경로를 캐시하면 안됩니다. 모든 캐시를 제거하려면 다음을 사용할 수 있습니다.php artisan optimize:clear
Zohaib

@ZohaibHassan 개발 환경에서 구성 및 경로에 대한 캐시를 끄는 방법은 무엇입니까?
Kamil Kiełczewski

1
위의 명령은 꺼집니다. 1. 경로 캐시, 2 구성 캐시, 3.보기 지우기 4. 최적화 된 파일 지우기 5. 캐시가있는 경우 지우기
Zohaib

1
구성의 경우에만 사용할 php artisan config:clear수 있습니다. 구성 캐시를 지우고 다시 생성하지 않으며 프로덕션에 들어가면 php artisan config:cache구성을 캐시하기 위해 실행할 수 있습니다
Zohaib

1

php artisan config:cache콘솔 에서이 명령 을 실행하면 모든 .env 파일 내용이 캐시에 저장됩니다.이 명령 이후에 .env 파일에 내용을 추가하면 php artisan config:clear명령 을 실행할 때까지 사용할 수 없습니다.


1

나는 애벌레가 발달하는 동안 많은 시간 동안 같은 문제에 직면합니다. 때로는 env가 작동을 멈추고 값을 반환하지 않습니다. 그 이유는 상황에 따라 다를 수 있습니다. 하지만 제 경우에는 며칠 전에

 PHP artisan::config:clear

따라서이 명령을주의해서 사용하십시오. 캐시에서 모든 구성 데이터를 삭제하기 때문입니다. 그 후에는 값을 반환하지 않습니다. 따라서이 상황에서 PHP artisan config :: clear 명령을 실행 한 경우 먼저 이것을 사용해야합니다 .

php artisan config:cache  // it will cache all data 
php artisan config:clear
Configuration cache cleared!

1

나는 이것을 경험했다. 이유는 파일 권한으로 인해 apache (user www-data)가 .env를 읽을 수 없기 때문입니다. 그래서 서버 (apache)가 파일에 대한 읽기 권한을 갖도록 파일 권한을 변경했습니다. 그것과 붐, 이제 모두 작동했습니다!
업데이트 :
이 작업을 수행하는 방법은 .env 파일을 소유 한 사람에 따라 다르지만 Apache www-data그룹에 속한다고 가정하면 다음 과 같이 할 수 있습니다.

sudo chmod g+r .env

권한 구조에 따라 수정하십시오.


So i changed the file permissions to ensure that the server (apache) had read permissions to the file.이것은 실제로 잘못된 접근 방식입니다. apaxhe 구성을 수정하여이 특정 사이트를 이러한 파일을 소유 한 소유자로 제공해야합니다
Marcin Orlowski

0

index.php파일 에서 dd / die / dump를 수행하여 실수를 저질렀습니다 . 이로 인해 시스템이 구성을 다시 생성하지 않습니다.

보기 파일에서 덤프 만하면됩니다. .env파일 변경 사항은 즉시 업데이트됩니다.


0

나는 이것에 약간의 문제가 있었다. .env 파일이 아닌 앱 어딘가의 파일 권한 문제인 것 같습니다.

나는-내 도커를 중지하고-chown을 사용하여 전체 프로젝트에 대해 내 사용자에게 소유권을 설정하고 도커를 다시 시작해야했습니다.

이번에는 효과가있었습니다.


-1

위의 거의 모든 것을 시도했습니다. 끝내기

chmod 666 .env

작동했습니다. 이 문제는 내가 상속 한 앱에서 계속 발생하는 것처럼 보이지만 가장 최근에는 .env.testing을 추가 한 후였습니다. Laravel 5.8 실행

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.