首页 > 解决方案 > file_get_contents 和 cURL 都不能在托管网站上运行

问题描述

file_get_contents(urlencode($url))以及cURL 不在托管网站上工作。但是,两者都可以在本地主机上正常工作。在服务器上我收到以下消息

cURL 错误:无法连接到 xx.xxx.xx.x 端口 5000:连接被拒绝

在 url 我也传递参数。我$url的如下

http://xx.xxx.xx.x:5000/request_data?device=' . $dev_id

试过了file_get_contents($url)file_get_contents(urlencode($url))还有cURL

$url = 'http://xx.xxx.xx.x:5000/request_data?device='.$dev_id ;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$curVal = curl_exec($curl);
if ($curVal === FALSE) {
    echo "cURL Error: " . curl_error($curl);
 }
echo $curVal;
curl_close($curl);

or 
$url = 'http://xx.xxx.xx.x:5000/request_data?device=' . $dev_id ;
$curVal = file_get_contents(urlencode($url));

在本地主机上它可以正常工作并返回如下

{“Bool5”:0,“Bool4”:0,“Bool7”:0,“TotalQtyReg”:0,“Bool1”:0,“Bool3”:0,“Bool2”:0,“DId”:“device0219” ,“时间戳”:“2019-06-03 08:37:54”,“Bool8”:0,“状态”:“成功”,“CRCMatched”:1,“Bool6”:0,“TotalQtyBool”:8}

谢谢,但我是新手,请告诉我如何curl-v在 Web 服务器上的命令行上运行我在 cpanel 上找不到任何选项

我也尝试创建custom php.ini和设置allow_url_fopen = ON 但仍然没有成功。

谢谢@Álvaro González,但我有一个疑问,如果防火墙是罪魁祸首,我认为它也不应该从 java 脚本运行。但是,如果从 java 脚本提出相同的请求,它工作正常。在 java 脚本中,我使用了 xmlHTTPRequest。

是的@Álvaro González,如果我试图从浏览器(java脚本xmlHTTPRequest)提出请求,它工作正常。我没有使用节点。所以你建议我使用 node 吗?

今天我还从我的 cpanel 中检查了 IP 阻止程序条目,但没有阻止任何 ip。:( :( :(

我尝试的另一件事:我在我的 php 脚本中添加了以下几行

header("Access-Control-Allow-Headers: Authorization, Content-Type");
header("Access-Control-Allow-Origin: *");
header('content-type: application/json; charset=utf-8');

然后作为回应,我得到了一些信息如下

响应标头

Access-Control-Allow-Headers: Authorization, Content-Type
Access-Control-Allow-Origin: *
Connection: Keep-Alive
Content-Length: 447
Content-Type: application/json; charset=utf-8
Date: Wed, 03 Jul 2019 10:13:20 GMT
Server: LiteSpeed

请求标头

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
Connection: keep-alive
Host: <myhost>.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0

请问这是否为解决方案提供任何线索?

哦,好吧,所以我想必须在服务器端进行一些配置或设置。

谢谢@Dom,我不确定它是Apache还是Nginx。这是一个谷歌驱动器,操作系统是 Ubuntu,来自硬件设备的数据存储在上面。为此,他们使用了烧瓶 Python。并由第三方处理。问题仍然存在,我试图说服打开端口 80/8080 而不是 5000。

标签: php

解决方案


我不确定您是否在服务器中运行 Nginx 或 Apache,但如果是,从 http 切换到 https 应该可以修复连接被拒绝错误,就像它对我多次所做的那样,这里是一个链接指南,它将告诉您确切的操作:

https://certbot.eff.org/lets-encrypt/ubuntuxenial-nginx


推荐阅读