php - 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。
解决方案
我不确定您是否在服务器中运行 Nginx 或 Apache,但如果是,从 http 切换到 https 应该可以修复连接被拒绝错误,就像它对我多次所做的那样,这里是一个链接指南,它将告诉您确切的操作:
推荐阅读
- amazon-eks - 新基础设施的 EKS 步骤
- graphql - GraphQL 分页 | 第一个请求
- firefox - Firefox:使用 Alt + [0-9] 切换选项卡
- java - 春天。将 WebRequest 传递给每个方法
- php - 将任何文件夹中的任何索引页面重定向到另一个文件,但仍然可以包含它
- python - 您如何将一列系列转换为带有标题的单行系列?
- java - javax.annotation 类和 Java 11 JDK
- javascript - 应该如何将数据推送到数组中过滤对象的一部分?
- python - 悖论:导入时 Python 的 ctypes.CDLL 发生静默崩溃,但直接运行时不会崩溃 - 这怎么可能?
- python - 类装饰器上的 Mypy 注释