首页 > 解决方案 > 无法连接主机:80:超时 cURL php

问题描述

我有两个应用程序。一个是 PHP,另一个是 Laravel 应用程序,两者都驻留在不同的服务器上。我想将数据从 PHP 应用程序发送到 Laravel 应用程序,我正在使用 cURL 执行此操作。但它抛出“连接失败:超时”错误。

这就是我使用 POST 使用 cURL 发送 json 数据的方式:

$url ='http://host_name/project/public/index.php/login';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$userdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response  = curl_exec($ch);
curl_close($ch);

if (curl_error($ch)) {
    $error_msg = curl_error($ch);
}

echo $error_msg."<br>";

print_r(curl_getinfo());

我得到的输出是:

Failed to connect to host_name port 80: Timed out

   [url] => http://host_name/project/public/index.php/login
    [content_type] => 
    [http_code] => 0
    [header_size] => 0
    [request_size] => 0
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 20.234
    [namelookup_time] => 0.015
    [connect_time] => 0
    [pretransfer_time] => 0
    [size_upload] => 0
    [size_download] => 0
    [speed_download] => 0
    [speed_upload] => 0
    [download_content_length] => -1
    [upload_content_length] => -1
    [starttransfer_time] => 0
    [redirect_time] => 0
    [redirect_url] => 
    [primary_ip] => 
    [certinfo] => Array
        (
        )

    [primary_port] => 0
    [local_ip] => 
    [local_port] => 0
)

标签: phpcurllaravel-5

解决方案


这可能是防火墙问题。可能是默认情况下阻止了端口 80。也许将您的请求更改为 https 它应该可以解决问题。或者如果失败,请尝试将其放入您的 curl 请求 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false)

如果这也失败了,那么您需要查看防火墙。


推荐阅读