Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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获取数据_Php_Curl_File Get Contents - Fatal编程技术网

PHP从URL获取数据

PHP从URL获取数据,php,curl,file-get-contents,Php,Curl,File Get Contents,我在从URL获取数据时遇到问题。当我在浏览器中输入URL时,文件通常会下载到我的计算机上,但当我试图在代码中访问它时,我得到的响应为FALSE,没有错误,只有boolfalse响应。它的ICAL同步功能和3或4个URL都很好,但这一个只是没有得到数据。尝试使用file\u get\u内容和CURL。下面是旋度函数: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOP

我在从URL获取数据时遇到问题。当我在浏览器中输入URL时,文件通常会下载到我的计算机上,但当我试图在代码中访问它时,我得到的响应为FALSE,没有错误,只有boolfalse响应。它的ICAL同步功能和3或4个URL都很好,但这一个只是没有得到数据。尝试使用file\u get\u内容和CURL。下面是旋度函数:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($ch);
    curl_close($ch);
以下是有关服务器的一些信息:

PHP版本=5.6.10-pl0

允许\u url\u fopen=On

OpenSSL支持=已启用


是的,文件在HTTPS服务器上,如果这可能是个问题的话。提前感谢各位。

在这个答案中,本地指的是您的服务器,远程指的是您试图访问的另一台服务器

从错误消息中:

SSL23\u获取\u服务器\u你好:sslv3警报握手失败

看起来您的客户端和服务器实现无法就要使用的通用密码套件达成一致。这通常意味着一个实现有点过时

远程证书没有问题。这将产生不同的错误消息

检查远程服务器 例如,您可以使用来确定远程服务器正在使用哪些协议版本和密码

然后,您可以选择其中一些供curl使用:

检查本地/本地服务器 您说过您正在使用PHP5.6.10。这有点过时了。2015年6月11日发布。当前的5.6版本分支位于5.6.34。如果我是你,我会考虑升级。

从SSL服务器测试:远程服务器仅接受TLS1.2。所以你也应该考虑升级你的OpenSSL安装。 更多链接供参考:


如果下载不起作用,curl会有一个错误代码。请添加此错误code@rollstuhlfahrer这里是:错误:14077410:SSL例程:SSL23\u GET\u SERVER\u HELLO:sslv3警报握手failure@rollstuhlfahrer所以我想这是SSL证书的问题,但在我这边还是?sslv3???啊。也可能有帮助:谢谢你,伙计。我从测试服务器获取此信息:。那么使用什么密码列表呢?这只显示证书。这与握手过程无关好吧,我找到了密码部分,它说:密码套件TLS 1.2服务器优先顺序TLS_ECDHE_RSA_与_AES_256_GCM_SHA384 TLS_ECDHE_RSA_与_AES_128_GCM_SHA256 TLS_ECDHE_RSA_与_AES_CBC_SHA384 TLS_ECDHE_RSA_与_128_CBC_SHA256但当我尝试设置这两个选项时错误:设置密码列表失败。所以我猜我的服务器不支持这个版本的openssl?编辑了答案以反映这一点。如果是回答你的问题,好的,谢谢你@rollstuhlfahrer所做的一切。在这件事上迷失了大约1-2个小时。
curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, 'ECDHE-RSA-AES128-GCM-SHA256,...');