Php 微服务环境变量继承(Laravel&Lumen)

Php 微服务环境变量继承(Laravel&Lumen),php,laravel,inheritance,environment-variables,microservices,Php,Laravel,Inheritance,Environment Variables,Microservices,最近,我在Laravel应用程序旁边部署Lumen微服务时遇到了一个问题。在同一台机器上,我有一个Laravel应用程序和一个Lumen应用程序,它们都具有不同的.env文件和默认环境变量(app\u env,DB\u HOST,DB\u数据库,等等) 我的Laravel应用程序需要向Lumen应用程序发出请求以获取一些数据。这就是问题发生的时候。当Lumen应用程序接收到请求时,它也会继承Laravel的环境变量,这使得它无法完成它的工作(连接到数据库或其他在.env文件中设置了环境变量的服务

最近,我在Laravel应用程序旁边部署Lumen微服务时遇到了一个问题。在同一台机器上,我有一个Laravel应用程序和一个Lumen应用程序,它们都具有不同的
.env
文件和默认环境变量(
app\u env
DB\u HOST
DB\u数据库
,等等)

我的Laravel应用程序需要向Lumen应用程序发出请求以获取一些数据。这就是问题发生的时候。当Lumen应用程序接收到请求时,它也会继承Laravel的环境变量,这使得它无法完成它的工作(连接到数据库或其他在
.env
文件中设置了环境变量的服务,因为所有变量都是从父请求继承的)

以前有人遇到过这个问题吗?我是否正确地使用了微服务体系结构

使用代码更新

Laravel应用程序-UsersController.php


当我发出此请求时,Lumen应用程序无法连接到数据库,因为它从父应用程序Laravel继承了
DB
环境变量。

我相信您的问题应该通过将项目放在自己的vhost中自行解决。当项目位于自己的vhost中时,您将更容易分离文件

通过这种方式,您可以将不同文件夹中的.env文件放在一起

我相信您正在经历的是,应用程序正在同时启动,因此变量正在一起使用


如果您使用Homestead作为VM,请尝试创建两个域并将项目分开,当您的laravel应用程序需要调用lumen时,请按主机名调用它,它应该可以工作。(注意只有一个vhost可以称为localhost)

如何将请求发送到lumen?听起来.env变量不太可能被继承。我用http请求发送它。我从Laravel应用程序向Lumen应用程序
Lumen.localhost/api/users
发出请求,您可以添加代码、环境文件等吗?它们类似。两者的唯一区别在于,它们具有不同的
APP_键
和不同的
DB_
凭证
APP_ENV=local
APP_DEBUG=true
APP_KEY=someRandomString
DB_HOST=localhost
DB_DATABASE=homestad
DB_USERNAME=homestad
DB_PASSWORD=secret
请将您的代码添加到问题中(如何发送请求、API等)。你会犯什么样的错误。
/**
 * Makes a request to the Core API and fills properties with the response data
 *
 * @param $method
 * @param $uri
 * @param array|null $data
 */
public function request($method, $uri, array $data = null)
{
    $this->api = new Client(['base_uri' => 'http://127.0.0.1/']);

    if (property_exists($this, 'uriPrefix')) $uri = $this->uriPrefix . $uri;
    $requestOptions = [
        'http_errors'   => false,
        'headers' => ['Accept' => 'application/json']
    ];
    if (session('api_cookie')) $requestOptions['headers']['Cookie'] = implode(';', session('api_cookie'));
    if ($data) {
        if ($method == 'GET') $requestOptions['query'] = $data;
        else if (($method == 'POST') || ($method == 'PUT')) $requestOptions['form_params'] = $data;
    }

    $response = $this->api->request($method, $uri, $requestOptions);

    session(['api_cookie' => $response->getHeader('Set-Cookie')]);

    $this->responseCode = $response->getStatusCode();
    $this->responseReasonPhrase = $response->getReasonPhrase();
    $this->responseData = $response->getBody();
}