Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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
使用CURL从URL获取XML在PHP更新后停止工作_Php_Xml_Curl - Fatal编程技术网

使用CURL从URL获取XML在PHP更新后停止工作

使用CURL从URL获取XML在PHP更新后停止工作,php,xml,curl,Php,Xml,Curl,我使用以下函数从受密码保护的https url接收xml文件 function get_fcontent( $url, $javascript_loop = 0, $timeout = 5 ) { $url = str_replace( "&", "&", urldecode(trim($url)) ); $cookie = tempnam ("/tmp", "CURLCOOKIE"); $ch = curl_init(); curl

我使用以下函数从受密码保护的https url接收xml文件

function get_fcontent( $url,  $javascript_loop = 0, $timeout = 5 ) {

    $url = str_replace( "&", "&", urldecode(trim($url)) );
    $cookie = tempnam ("/tmp", "CURLCOOKIE");
    $ch = curl_init();

    curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
    curl_setopt( $ch, CURLOPT_ENCODING, "" );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );    # required for https urls
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
    $content = curl_exec( $ch );
    $response = curl_getinfo( $ch );
    curl_close ( $ch );

    if ($response['http_code'] == 301 || $response['http_code'] == 302) {
        ini_set("user_agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");

        if ( $headers = get_headers($response['url']) ) {
            foreach( $headers as $value ) {
                if ( substr( strtolower($value), 0, 9 ) == "location:" )
                    return get_url( trim( substr( $value, 9, strlen($value) ) ) );
            }
        }
    }

    if (    ( preg_match("/>[[:space:]]+window\.location\.replace\('(.*)'\)/i", $content, $value) || preg_match("/>[[:space:]]+window\.location\=\"(.*)\"/i", $content, $value) ) && $javascript_loop < 5) {
        return get_url( $value[1], $javascript_loop+1 );
    } else {
        return array( $content, $response );
    }
}
函数get\u fcontent($url,$javascript\u loop=0,$timeout=5){ $url=str_replace(“&;”、“&”,urldecode(trim($url)); $cookie=tempnam(“/tmp”,“CURLCOOKIE”); $ch=curl_init(); curl_setopt($ch,CURLOPT_USERAGENT,“Mozilla/5.0(Windows;U;Windows NT 5.1;rv:1.7.3)Gecko/20041001 Firefox/0.10.1”); curl_setopt($ch,CURLOPT_URL,$URL); curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie); curl_setopt($ch,CURLOPT_ENCODING,”); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_AUTOREFERER,true); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);#https URL需要 curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); curl_setopt($ch,CURLOPT_TIMEOUT,$TIMEOUT); curl_setopt($ch,CURLOPT_MAXREDIRS,10); $content=curl\u exec($ch); $response=curl\u getinfo($ch); 卷曲关闭($ch); 如果($response['http_code']==301 | |$response['http_code']==302){ ini_集(“用户代理”、“Mozilla/5.0(Windows;U;Windows NT 5.1;rv:1.7.3)Gecko/20041001 Firefox/0.10.1”); 如果($headers=get_headers($response['url'])){ foreach($headers作为$value){ if(substr(strtolower($value),0,9)=“位置:”) 返回get_url(trim(substr($value,9,strlen($value))); } } } 如果((preg_-match(“/>[:space:]+window\.location\.replace\(“(.*))/i”,$content,$value)| | preg_-match(“/>[:space:]+window\.location\=”(.*)“/i”,$content,$value))&$javascript_-loop<5){ 返回get_url($value[1],$javascript_loop+1); }否则{ 返回数组($content$response); } } 在我们的服务器将php更新到7.0.22版本之前,一切正常

在那之后,我再也不能接收xml文件了。我只是得到一个空洞的回答。 有人知道为什么吗


编辑:我不知道以前安装了什么php版本,我们无法将其降级。

再次安装与您的版本兼容的php curl。如果您是linux,请检查此答案。

查看您服务器的错误日志-是否存在任何可能连接的错误?只是警告我的变量(包含xml数据)为空,其他什么都没有,然后开始调试它:代码的哪些部分仍然有效,从哪个点开始停止?