Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php url/位置中端口不工作的cURL调用-无法';无法连接到主机_Php_Curl_Libcurl - Fatal编程技术网

Php url/位置中端口不工作的cURL调用-无法';无法连接到主机

Php url/位置中端口不工作的cURL调用-无法';无法连接到主机,php,curl,libcurl,Php,Curl,Libcurl,我正在尝试对url进行cURL调用,如下所示: 当我执行以下代码时,我发现curl错误7无法连接到主机 $headers = array( CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_TIMEOUT => 10, CURLOPT_URL => 'https://example.com:9000/test', ); $headers[CURLOPT_SSL_VER

我正在尝试对url进行cURL调用,如下所示:

当我执行以下代码时,我发现curl错误7无法连接到主机

$headers = array(
  CURLOPT_RETURNTRANSFER => TRUE,
  CURLOPT_CONNECTTIMEOUT => 5,
  CURLOPT_TIMEOUT => 10,
  CURLOPT_URL => 'https://example.com:9000/test',
);
$headers[CURLOPT_SSL_VERIFYPEER] = FALSE;
$headers[CURLOPT_SSL_VERIFYHOST] = 2;
$ch = curl_init(); 
curl_setopt_array($ch, $headers);
$response = curl_exec($ch);
如果我将url设置为
https://example.com/test
,我可以连接到主机,但不能连接到我需要的东西

我还尝试过设置
CURLOPT_PORT=>9000
,结果相同(错误7)

另一个注意事项是,我能够在一些机器上使用cURL和url,但在其他机器上不能。我的Windows机器工作正常,但我所在的linux服务器有问题。另一台linux服务器似乎也可以正常工作

编辑:
服务器在
hostgator.com上共享主机

检查IE浏览器中的url。如果工作正常,请删除超时参数并重试。

如果其他人有此问题,请与您的服务器主机联系。我联系了hostgator.com,他们回复如下:

我已打开出站端口9000 给你


现在一切正常。

我怎么能检查?我已经在hostgator.com上共享了主机。如果您有shell访问权限,请尝试
telnet example.com 9000
,看看是否超时。如果是这样,那就不是卷曲问题,这与网络配置有关。@marc-b telnet调用的结果:名称或服务未知。我对telnet一点都不熟悉,所以不知道从哪里开始修复这个问题。然后
example.com
在那台机器上无法解析
host example.com
和/或
nslookup example.com
可能会报告“没有这样的/未知的主机”。所以很可能是DNS错误。检查“坏”服务器上的冲突解决程序设置与“正常”服务器上的冲突解决程序设置的比较。这样,它在浏览器中工作正常。正如我在最初的帖子中所说的,它在几个系统上也可以正常工作,只是不能在一个由托管的服务器上工作。请求立即返回,因为无法连接到主机,所以我认为这是某种类型的服务器设置。删除了超时参数,结果完全相同。还运行了curl-k-Lhttp://example.com:9000/test来自命令行,出现相同错误。在curl\u exec()函数之后添加$report=curl\u getinfo($ch);打印并检查输出。您可以从中获取一些信息..并检查返回的数据,我已添加错误代码及其说明。错误代码为0:
Array([url]=>https://example.com:9000/test [content\u type]=>[http\u code]=>0[header\u size]=>0[request\u size]=>0[filetime]=>-1[ssl\u verify\u result]=>0[redirect\u count]=>0[total\u time]=>0.187683[namelookup\u time]=>0.187477[connect\u time]=>0[size\u upload]=>0[size\u download]=>0[speed\u download]=>0[speed\u upload]=>0[download\u content\u length]=>1[upload\u content\u length]=>-1[starttransfer\u time]=>0[redirect\u time]=>0
您可以让他们为您打开一个端口,或者只使用以下端口之一: