cURL无法连接到端口80

时间:2019-09-02 01:43:55

标签: php curl php-curl laravel-valet

我在PHP脚本中使用cURL来测试我的API。当我尝试使用函数获取数据时,会抛出错误

  

错误:无法连接到alenke。测试端口80:连接被拒绝

但是当我在终端中执行它

curl --ipv4 -v "http://alenke.test/wp-json/chatbot/v1/brand";

给我

`Trying 127.0.0.1...
    * TCP_NODELAY set
    * Connected to alenke.test (127.0.0.1) port 80 (#0)
    GET /wp-json/chatbot/v1/brand HTTP/1.1
    Host: alenke.test
    User-Agent: curl/7.54.0
    Accept:
    HTTP/1.1 200 OK
    Server: nginx/1.15.7
    Date: Sun, 01 Sep 2019 16:47:36 GMT
    Content-Type: application/json; charset=UTF-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Vary: Accept-Encoding
    X-Powered-By: PHP/7.3.7
    X-Robots-Tag: noindex
    Link: <http://alenke.test/wp-json/>; rel="https://api.w.org/" 
X-Content-Type-Options: nosniff Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages Access-Control-Allow-Headers: Authorization, Content-Type Allow: GET ` 

并给我所有我需要的数据,但是何时执行此php脚本

function callAPI($method, $url, $data){
        $curl = curl_init();
        switch ($method){
            case "POST":
                curl_setopt($curl, CURLOPT_POST, 1);
                if ($data)
                    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
                break;
            case "PUT":
                curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
                if ($data)
                    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
                break;
            default:
                if ($data)
                    $url = sprintf("%s?%s", $url, http_build_query($data));
        }
        // OPTIONS:
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
        ));
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_setopt($curl, CURLOPT_USERPWD, "admin:admin");
        // EXECUTE:
        $result = curl_exec($curl);
        if(!$result){
            if (curl_errno($curl)) {
                echo 'Error: ' . curl_error($curl);      
                echo'//;
                echo print_r(curl_getinfo($curl));   
                echo'//;
                die("Connection Failure..?");
            }
        }
        curl_close($curl);
        return $result;
    }

它告诉我这个错误

  

错误:无法连接到alenke。测试端口80:连接被拒绝

2 个答案:

答案 0 :(得分:0)

我已将您的代码复制粘贴到计算机上的文件(test.php)中,并用 <?php .. ?> 块,并在函数后添加了如下调用: $res=callAPI('GET', 'http://myserver/', ''); echo $res; 然后通过php test.php在命令行中启动脚本,并获得了预期的结果(服务器的index.html文件)。

所以无论您做什么,都可以。首先尝试在命令行中对其进行测试,以查看是否已安装/启用了必要的模块。如果这样有效,请尝试修复您的Web服务器的配置文件。如果您需要更多帮助,请添加一些有关您的系统的信息(网络服务器,版本,操作系统以及任何相关内容)。系统管理员倾向于禁用共享主机上的某些功能(包括curl),也许您的默认配置基于此。

答案 1 :(得分:0)

我建议您检查防火墙并检查该域是否解析了ip。

telnet domain 80
telnet ipserver 80