.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的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 使用 env 读取环境变量为 null 的问题