Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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 Curl错误:没有到主机的路由_Php_Apache_Ssl_Curl_Guzzle - Fatal编程技术网

Php Curl错误:没有到主机的路由

Php Curl错误:没有到主机的路由,php,apache,ssl,curl,guzzle,Php,Apache,Ssl,Curl,Guzzle,因此,我们正在用PHP构建一个web应用程序,并尝试向外部API发出请求。问题是我们得到了一个旋度错误: cURL错误7:无法连接到external.api.com端口443:没有到主机的路由 现在有一点背景知识 我们正在使用 我们在Apache上托管,Apache在Linux机器上运行,我们还使用SSL API也使用SSL,因此错误消息中的端口443 HTTP请求包括用于身份验证的证书 我已经设法让它在两个不同的开发环境中运行,但在生产环境中没有。我怀疑问题出在Apache的配置上,好像我

因此,我们正在用PHP构建一个web应用程序,并尝试向外部API发出请求。问题是我们得到了一个旋度错误:

cURL错误7:无法连接到external.api.com端口443:没有到主机的路由

现在有一点背景知识

  • 我们正在使用
  • 我们在Apache上托管,Apache在Linux机器上运行,我们还使用SSL
  • API也使用SSL,因此错误消息中的端口443
  • HTTP请求包括用于身份验证的证书
我已经设法让它在两个不同的开发环境中运行,但在生产环境中没有。我怀疑问题出在Apache的配置上,好像我们还没有让它可以向特定的IP或端口发出请求。我不知道如何检查它。我已经读到,我可能不得不更改文件/etc/network/interface,但我还没有找到任何关于在那里写什么的信息

我也读过,我必须运行
$netstat-rn
来寻找答案,但我不确定该看什么

编辑:

甚至不能在没有任何参数和任何东西的情况下发出简单的get请求。
但我可以向和提出请求。将在几分钟内编写更多内容。

netstat-aln | grep 443
将显示您的Web服务器是否正在侦听该端口

根据您安装配置文件的Web服务器的不同,该站点将位于
/etc/nginx/sites available/default
/etc/nginx/sites available/yourSite
/etc/nginx/nginx.conf
或apache的其他类似路径

无论位于何处,配置文件都应包含以下内容:

server {
listen 80;
listen 443 ssl;
server_name yourSite.com;
root "/path/to/yourSite";

index index.html index.htm index.php;

charset utf-8;

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt  { access_log off; log_not_found off; }

access_log off;
error_log  /path/to/webserver/youSite.error.log error;

sendfile off;

client_max_body_size 100m;

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    fastcgi_intercept_errors off;
    fastcgi_buffer_size 16k;
    fastcgi_buffers 4 16k;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
}

location ~ /\.ht {
    deny all;
}

ssl_certificate     /path/to/yourSite.crt;
ssl_certificate_key /path/to/yourSite.key;
}
更改此文件后,请确保
sudo service nginx reload
sudo service nginx restart
(或相关apache命令)


sudo服务nginx configtest
sudo nginx-t
将有助于调试配置文件。

今天我遇到了同样的问题,就像这样 我使用
curlhttp://localhost:8080
检查我的tomcat是否可以工作

连接到::1:没有到主机的路由时出错

我终于解决了。显然,这是你的ApacheTomcat的问题。 所以你必须先检查你的日志。如果你发现你的端口被使用,找到那条航线并杀死它。然后重新启动你的tomcat

按端口查找课程:
netstan-lnp | grep port

kill课程:
kill-9****

在大量调试和测试我的所有代码后,我联系了该服务,我正试图使用它的API


他们是一家欧洲服务提供商,并将欧洲知识产权列入了白名单。我们的生产服务器在美国,在他们将我们的IP列入白名单后,一切正常。

搜索了大约一整天后,我发现问题出在iptables规则中。 在我的案例中,解决方案是恢复iptables规则,如下所示:

  • 创建包含以下文本的文件:

    *滤器

    :输入接受[10128:1310789]

    :正向接受[0:0]

    :输出接受[9631:1361545]

    承诺*

  • 运行命令:
    sudo iptables restore


  • 如果这是一个iptables问题,这将有望解决您的问题。

    它对我的apache(httpd)有效


    这通常是防火墙问题。某些公司环境甚至会阻止生产区的出站流量。@JeffPuckettII
    $sudo ufw status
    返回非活动状态。但您甚至无法访问google.com,这有什么关系?@Houman I能够访问google.com.:)
    iptables -I INPUT -p tcp --dport 80 -j ACCEPT