簡體   English   中英

如何解決 CURL 請求錯誤“無法解析主機:...” PHP?

[英]How to solve CURL request error "Could not resolve host: ..." PHP?

我正面臨這個非常奇怪的錯誤。 什么都沒有改變后,我無法再發送 cURL 請求。 突然我得到:

'無法解析主機:主機名'

我知道在 stackoverflow 上有 1000 個這個問題的實例,但在過去的 5 個小時里我已經嘗試了所有建議的答案/評論,但似乎沒有任何效果。 這是我的請求代碼:

<?php

class APIService
{
    private $host;
    private $key;

    function __construct($host, $key)
    {
        $this->host = $host;
        $this->key = $key;
    }

    function curlRequest($config)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('api:'.$this->key));
        curl_setopt($ch, CURLOPT_URL, $this->host.$config);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $curlSession = curl_exec($ch);

        return $this->decodeJSON($curlSession);
    }

    function getSomeList()
    {
        return $this->curlRequest('/folder/list');
    }

    private function decodeJSON($someList)
    {
        return json_decode($someList, true);
    }
}

主機是本地的,使用docker ps我可以看到它正在運行。 幾天前一切正常,我絕對沒有對它或任何可能對其產生影響的組件進行任何更改,但它不會突然起作用。 有沒有人知道為什么會發生這種情況以及我該如何解決?

我以前遇到過這個問題。 我在聊天中看到你說你有一個后端和一個前端,你放在同一個網絡上並使用 Docker。 我認為問題的發生是因為您的前端和后端之間的虛擬網絡出現問題。 請嘗試以下操作:

1- 確保前端和后端的容器都已啟動。

2- 使用以下命令確保它們在同一個網絡中:

  • docker network create some-network-name-or-the-name-you-already-had一個網絡docker network create some-network-name-or-the-name-you-already-had
  • 將后端添加到網絡docker network connect some-network-name-or-the-name-you-already-had your-backend-webserver-name (如果您不知道后端網絡服務器的名稱,請使用docker ps查看它。
  • 將前端添加到網絡docker network connect some-network-name-or-the-name-you-already-had your-frontend-webserver-name

現在我不確定這一點,但是,每當前端或后端的容器停止時,您(在使用docker-compose up -d啟動容器后)每次都將其添加到網絡中。 可能有辦法解決這個問題,但我不知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM