配置变量之间的冲突

时间:2017-04-26 08:33:10

标签: php laravel redis laravel-5.2 queue

我的服务器中有五个laravel瞬间,不同的nginx配置正常工作

此外,我使用redis队列发送消息,并在生产环境中使用php artisan config:cache缓存env变量,并使用config('app.url')代替env(app.url)

但是当我想从project1发送带队列的消息时,消息显示项目4中的一些变量,当我运行php artisan config:clear时工作正常

但我不想直接使用.env变量我想在生产环境中使用带有缓存配置的变量

我也使用了以下命令,但不起作用:

 php artisan cache:clear
 php artisan route:clear
 php artisan queue:restart
 composer dump-autoload
 composer dump-autoload -o
 php artisan optimize

这是我的.env文件:

  APP_ENV=produnction
  APP_DEBUG=true

  APP_URL=http://name.com/api/v1.0

  APP_DOMAIN=project1
  APP_NAME_FA=project1
  APP_NAME_EN=project1

我该如何解决?

2 个答案:

答案 0 :(得分:0)

是的,您必须更改,您可以使用一个Laravel应用程序托管多个域,但.env将是每个应用程序一个,这就是您获得相同值的原因。

您可以尝试使用自己的配置.env

为每个项目创建多个Laravel应用程序

使用一个Laravel应用程序处理多个域,并在一个.env中为每个项目使用不同的变量名。

解决此问题的另一种方法是在config目录下创建自定义配置文件,并在其中放置您想要的任何内容并使用config帮助程序。

-update

使用env时以及使用config时要小心。env()会先查看.env,配置会查看配置目录。

离。 env('PREFIX_APP_URL')会针对.env

调查PREFIX_APP_URL

config('prefix.app.url')将查看配置目录文件中的数组prefix文件的嵌套数组

return array(
 'app'=>array(
    'url'=>'...value..'
 )
)

答案 1 :(得分:0)

php artisan config:clear

php artisan cache:clear 

php artisan config:cache

如果在部署过程中使用config:cache命令,则必须确保只从配置文件中调用env函数,而不从应用程序中的其他任何地方调用。

如果要从应用程序内部调用env,则强烈建议您向配置文件中添加适当的配置值,然后从该位置调用env,从而使您可以将env调用转换为配置调用。

通过https://github.com/laravel/framework/issues/21727

读取整个线程