file_get_contents的替代方案?

2022-08-30 10:34:34
$xml_file = file_get_contents(SITE_PATH . 'cms/data.php');

问题是服务器禁用了 URL 文件访问。我无法启用它,这是一个托管的东西。

所以问题是这个。该文件生成 xml 代码。data.php

如何在不执行上述方法的情况下执行此命令并获取xml数据?

可能吗?


答案 1

使用 cURL。此函数是 的替代方法。file_get_contents

function url_get_contents ($Url) {
    if (!function_exists('curl_init')){ 
        die('CURL is not installed!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $Url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}

答案 2

你应该尝试这样的事情,我正在为我的项目做这件事,这是一个后备系统。

//function to get the remote data
function url_get_contents ($url) {
    if (function_exists('curl_exec')){ 
        $conn = curl_init($url);
        curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, true);
        curl_setopt($conn, CURLOPT_FRESH_CONNECT,  true);
        curl_setopt($conn, CURLOPT_RETURNTRANSFER, 1);
        $url_get_contents_data = (curl_exec($conn));
        curl_close($conn);
    }elseif(function_exists('file_get_contents')){
        $url_get_contents_data = file_get_contents($url);
    }elseif(function_exists('fopen') && function_exists('stream_get_contents')){
        $handle = fopen ($url, "r");
        $url_get_contents_data = stream_get_contents($handle);
    }else{
        $url_get_contents_data = false;
    }
return $url_get_contents_data;
} 

然后以后你可以这样做

$data = url_get_contents("http://www.google.com");
if($data){
//Do Something....
}

推荐