.env / user_vars环境变量返回NULL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.env / user_vars环境变量返回NULL相关的知识,希望对你有一定的参考价值。

我正在尝试使用https://github.com/boekkooi/openshift-cartridge-php https://github.com/boekkooi/openshift-cartridge-nginx在Openshift上设置Laravel 5.2

我可以使用action_hooks设置用户变量,如APP_DEBUG,但这些环境变量在Laravel文件中返回NULL。请提出解决此问题的方法!我错过的是没有读取.env / user_vars /目录中的变量。

编辑1:以下是action_hooks / deploy的代码片段

echo "Setting environment variables..." 1>&2
export APP_ENV="${APPLICATION_ENV:-production}"
if [[ "${APPLICATION_ENV:-}" != "development" ]]; then
  export APP_DEBUG=false
else
  export APP_DEBUG=true
fi

echo "App Debug Mode '$APP_DEBUG' '$APP_ENV'..." 1>&2

if [ "$(type -t set_env_var)" == "function" ]; then
  set_env_var 'APP_ENV' $APP_ENV $OPENSHIFT_HOMEDIR/.env/user_vars
  set_env_var 'APP_DEBUG' $APP_DEBUG $OPENSHIFT_HOMEDIR/.env/user_vars
fi

if [ ! -z "$OPENSHIFT_APP_DNS" ]; then
  export APP_URL="$OPENSHIFT_APP_DNS"
  echo "App URL '$APP_URL' '$OPENSHIFT_APP_DNS'..." 1>&2
  if [ "$(type -t set_env_var)" == "function" ]; then
    set_env_var 'APP_URL' $APP_URL $OPENSHIFT_HOMEDIR/.env/user_vars
  fi
fi

if [ ! -z "$OPENSHIFT_SECRET_TOKEN" ]; then
  export APP_KEY=davjhdfgdhayufgahgajgfdshadjaj
  echo "App KEY '$APP_KEY' '$OPENSHIFT_SECRET_TOKEN'..." 1>&2
  if [ "$(type -t set_env_var)" == "function" ]; then
    set_env_var 'APP_KEY' $APP_KEY $OPENSHIFT_HOMEDIR/.env/user_vars
  fi
fi

echo "App Debug Mode '$APP_DEBUG' '$APP_ENV'..." 1>&2
echo "App KEY '$APP_KEY' '$OPENSHIFT_SECRET_TOKEN'..." 1>&2

Followed by the rest of code...

部署时的输出给了我

remote: Setting environment variables...
remote: App Debug Mode 'true' 'development'...
remote: App URL 'laravel-narsariamanu.rhcloud.com' 'laravel-narsariamanu.rhcloud.com'...
remote: App KEY 'davjhdfgdhayufgahgajgfdshadjaj' 'Ifm2BJ_o9pvLMyEykfwApI5FRLsZ5BZyGI54m2Lqu46XLLtx4aOWjFKYGfTOL3hhkRvm6dSLFmSHBP5xTKgAdtChXYXr6HEgq92qco4dC4fE-CkQR-82RV7UYE0N7_nq'...
remote: App Debug Mode 'true' 'development'...
remote: App KEY 'davjhdfgdhayufgahgajgfdshadjaj' 'Ifm2BJ_o9pvLMyEykfwApI5FRLsZ5BZyGI54m2Lqu46XLLtx4aOWjFKYGfTOL3hhkRvm6dSLFmSHBP5xTKgAdtChXYXr6HEgq92qco4dC4fE-CkQR-82RV7UYE0N7_nq'...
remote: 
remote: Database driver set to 'mysql'...
remote: Database set to '127.5.76.2' 'mysql' 'laravel' 'admin4QlGeTU' '7eTw_XGG4dSx'...
remote: OPENSHIFT Database set to '127.5.76.2' 'mysql' 'laravel' 'admin4QlGeTU' '7eTw_XGG4dSx'...
remote: 
remote: 
remote: Migrating storage and log directories...
remote: 
remote: 
remote: Running 'php artisan migrate --force'...
remote: 
remote: Nothing to migrate.
remote: Checking configuration
remote: - php-fpm.ini: No change
remote: - php-fpm.conf: No change
remote: - php.ini: No change
remote: PHP-FPM already running
remote: nginx instance is started
remote: -------------------------
remote: Git Post-Receive Result: success
remote: Activation status: success
remote: Deployment completed with status: success

在Laravel的config / app.php中:

/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/

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

'cipher' => 'AES-256-CBC',

这个env('APP_KEY')返回NULL,但是在部署它的同时设置了它。

请帮我解决这个问题。

答案

有时当您在.env文件中更改它没有从中获取正确的值时,问题是由于某些配置缓存。尝试运行以下命令,希望可行

php artisan config:cache   //cached all files under config directory
php artisan config:clear   //repopulate all the env variable and clear config cache
php artisan cache:clear    //flush all the cached content (route, view, config cache)
另一答案

这可能有点晚了但是答案就是这样。 https://github.com/laravel/framework/issues/8191

总结一下,建议在配置文件中设置值(我将它们引用到我的env文件中)。然后你可以从配置文件调用。 Config::get('app.env')而不是env('APP_ENV')和我在配置文件夹中的app.php文件中设置:'env' => env('APP_ENV', 'production'),

php artisan config:cache没有解决我的问题。

我希望它可以帮到你们。干杯。

另一答案

在你的php.ini文件中检查你的variables_order。如果它显示为“GPCS”,请尝试将E添加到开头并重新启动服务器,然后查看会发生什么。

如果.env中的任何行都有空格而未包含在“那么它将失败。

有些事要尝试

  • 检查.env文件的权限。尝试将其设置为777作为测试,看看会发生什么。 (如果有效,请不要将其保留在777)
  • 运行php artisan config:cache和php artisan config:clear命令。
  • 重启您的应用服务器。

以上是关于.env / user_vars环境变量返回NULL的主要内容,如果未能解决你的问题,请参考以下文章

VUE/CLI .env 变量返回未定义

Laravel 使用 env 读取环境变量为 null 的问题

heroku 环境变量返回未定义

Node环境变量Process.env

节点 process.env.VARIABLE_NAME 返回未定义

Express 设置process.env.NODE_ENV变量