[php] Laravel 5-env ()는 항상 null을 반환합니다.

나는 왜 나의 env()도우미가 항상 돌아 오는지 알아 내려고 노력한다 null. 이로 인해 기본적으로 헬퍼가 널리 사용되는 app.php파일에서 특히 문제가 발생 합니다 env(). 신비한 서버 설정이 있습니까?

내 환경 파일 :

APP_ENV=production
APP_KEY=base64:mymagickey=
APP_DEBUG=false
APP_LOG_LEVEL=info
APP_URL=http://www.example.com

etc...

편집-다음 시도 :

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

그리고 물론 나는 env다음과 같은 도우미를 사용 하고 있습니다.env('APP_ENV')

그러나 여전히 성공하지 못했습니다. 이상한 부분은 $_ENVPHP 변수가 .env파일의 모든 단일 변수를 포함 한다는 것 입니다.



답변

env(...)구성을 캐시 한 후에는 기능이 작동하지 않습니다. (laravel 5.2부터 현재 5.7까지)

Laravel 설명서를 말한다

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

그래서 정답은

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

그리고 같은 문서 에서 인용했습니다.

그러나 빠른 수정을 위해 다음을 수행합니다.

php artisan config:clear

그리고 이제 config:cache캐싱하기 전에 구성을 지워도 시도했을 때 왜 도움이되지 않았 는지 명확해야합니다 .


답변

이 명령이 당신을 구할 수 있기를 바랍니다.

php artisan config : clear


답변

.env 또는 데이터베이스 폴더의 일부 수정 후 또는 기타 수정으로 인해 Laravel이 예상대로 작동하지 않는 경우 가장 중요한 5 가지 명령입니다. 자세한 설명은 다음과 같습니다.
https://www.youtube.com/watch?v=Q1ynDMC8UGg

php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
composer dump-autoload


답변

\Config::get('app.env');대신 사용 env(APP_ENV);하면 결국 동일한 오류가 발생하고 라이브 웹 사이트에 좋지 않기 때문입니다.

ENV에서 사용자 정의 변수를 추가하려면 구성 앱으로 이동하여 다음을 찾으십시오.

/*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

'env' => env('APP_ENV', 'production'),

'env' => env('APP_ENV', 'production'),” 아래에 새 줄을 추가합니다. 예를 들어 다음과 같을 수 있습니다.

/*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

'env' => env('APP_ENV', 'production'),
'key' => env('APP_KEY'),

다음과 같이 “key”변수를 호출 할 수 있습니다.

\Config::get('app.key');

앱 환경에 “key”와 같은 새 변수를 추가 할 때마다를 사용 config:cache하여 캐시를 재설정해야합니다.


답변

다음 명령이 저에게 효과적이었습니다. 실수로 모든 캐시 파일을 지웠으므로 env('something')null을 반환했습니다.

php artisan optimize:clear


답변

다음과 같이 해결할 수있는 “.env”알려진 버그입니다.

php artisan config:cache


답변

수락 된 답변으로 문제가 해결되지 않으면 .env 파일에 올바른 읽기 및 쓰기 권한이 있는지 확인하십시오. 프레임 워크 / 라이브러리에서 파일을 읽을 수없는 경우 값은 항상 null입니다. 내 Lumen 프로젝트 중 하나 에서이 문제를 발견했지만 파일 권한을 변경 한 후에 작동했습니다.