GuzzleHttp抛出ConnectExpection cURL错误6:无法解析主机:<localhostname>

时间:2018-01-24 04:49:53

标签: php laravel curl guzzlehttp laradock

我知道有很多关于此问题的问题,但我似乎找不到自己的答案。

我有LoginController authenticate()方法来处理登录过程。

public function authenticate()
{
    $email = $_POST['email'];
    $password = $_POST['password'];

    if (Auth::attempt(['email' => $email, 'password' => $password])) {
        $http = new \GuzzleHttp\Client([
            'base_uri' => 'http://myapp.test'
        ]);

        $response = $http->post('oauth/token', [
            'form_params' => [
                'grant_type' => 'password',
                'client_id' => '2',
                'client_secret' => '_hashed-secret_',
                'username' => $email,
                'password' => $password,
                'scope' => ''
            ]
        ]);

        return json_decode((string) $response->getBody(), true);
    }
}

我得到了cURL error 6: Could not resolve host: myapp.test (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)。我重启了我的服务器,什么都没有。我重建了所有容器(目前正在使用laradock),什么也没有。

奇怪的是,它只出现在第一次尝试登录时。因此,当客户端尝试登录时,会出现error,但是当客户端重新发送表单数据(F5)时,它会消失,客户端会重定向到主页,表明客户端是登录。

我还重新配置了我的.env和其他配置,其中包含hostname(之前为localhost,已更改为myapp.test),但无法修复error

任何形式的帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:1)

好的,我已经弄清楚了。在docker-compose.yml文件上添加一些配置。

### PHP-FPM Container #######################################
...
extra_hosts:
  - "dockerhost:${DOCKER_HOST_IP}"
  - "myapp.test:${DOCKER_HOST_IP}"
networks:
  - frontend
  - backend
  - webserver_network
...
### NGINX Server Container ##################################
networks:
  #- frontend
  #- backend
  webserver_network:
    ipv4_address: ${WEBSERVER_IP}
  frontend:
  backend:
...
### Networks Setup ############################################
webserver_network:
  driver: "bridge"
  config:
    - subnet: "${WEBSERVER_SUBNET}"
      gateway: "${WEBSERVER_GATEWAY}"

然后,重建php-fpm容器。并得到它的工作。感谢。