file_get_contents和cURL都无法在托管网站上运行

时间:2019-06-29 09:52:12

标签: php

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”,“ TimeStamp”:“ 2019-06-03 08:37:54”,“ Bool8”:0,“ Status”:“成功”,“ CRCMatched”:1,“ Bool6”:0,“ TotalQtyBool” :8}

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

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

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

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

今天,我还从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。这是一个Google驱动器,操作系统是Ubuntu,来自硬件设备的数据存储在该驱动器上。为此,他们使用了烧瓶Python。并由第三方处理。 问题仍然存在,并试图说服打开端口80/8080而不是打开5000。

1 个答案:

答案 0 :(得分:0)

我不确定您是在服务器上运行Nginx还是Apache,但是如果是的话,从http切换到https应该可以解决连接被拒绝的错误,这对我来说是多次的,这是链接到指南,该指南将告诉您确切的操作:

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