gpt4 book ai didi

PHP - curl 本地主机连接被拒绝

转载 作者:行者123 更新时间:2023-12-04 16:27:36 32 4
gpt4 key购买 nike

说明

我用 Java (GET) 制作了一个简单的 REST api。

  • postman 工作(本地主机和 IPv4)
  • curl 从命令行工作(本地主机和 IPv4)
  • 来自不同城市的外部请求作品 (IPv4)


  • 预期

    让 PHP curl 在本地主机上工作

    实际

    出于某种原因,IPv4 上的 PHP curl 有效,但 localhost 无效

    PHP curl 输出错误
  • 无法连接到本地主机端口 8080:连接被拒绝
  • curl 错误:7


  • 代码
    $url = 'http://localhost:8080/api/user';
    $curl = curl_init($url);
    echo json_decode(curl_exec($curl));

    我试过 (从我的头顶,没有特定的顺序)
    curl_setopt ($curl, CURLOPT_PORT , 8080);
    curl_setopt($curl, CURLOPT_POST, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    最佳答案

    对于那些使用 Docker、Vargant 等的人。

    你有 Failed to connect to localhost port 8080: Connection refused错误,因为您尝试从虚拟机(如 Docker)内部连接到 localhost:8080,该主机在 Docker 容器内不可用,因此您应该添加一个可以从外部访问端口的代理。

    要解决此问题,请在您的 curl_init() 之后添加下一行代码:

    curl_setopt($ch, CURLOPT_PROXY, $_SERVER['SERVER_ADDR'] . ':' .  $_SERVER['SERVER_PORT']);

    这是一个完整的例子:
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $APIUrl);

    if ($_SERVER['HTTP_HOST'] == 'localhost:8080') {
    // Proxy for Docker
    curl_setopt($ch, CURLOPT_PROXY, $_SERVER['SERVER_ADDR'] . ':' . $_SERVER['SERVER_PORT']);
    }

    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);

    if (curl_errno($ch)) {
    $error = curl_error($ch);
    }

    curl_close($ch);

    关于PHP - curl 本地主机连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60049795/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com