替代file_get_contents?

$xml_file = file_get_contents(SITE_PATH . 'cms/data.php'); 

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

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

我怎样才能执行此操作并获取XML数据,而无需执行上述方法?

可能吗?

使用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; } 

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

 //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.... } 

是的,如果你有URL封装禁用,你应该使用套接字,甚至更好, CURL库。

如果它是您网站的一部分,那么请使用文件系统path引用它,而不是url。 /var/www/... ,而不是http://domain.tld/...

如果文件是本地的,就像你对SITE_PATH提出的build议那样,这很简单,只需执行脚本并使用输出控制函数将结果caching在一个variables中:

 function print_xml_data_file() { include(XML_DATA_FILE_DIRECTORY . 'cms/data.php'); } function get_xml_data() { ob_start(); print_xml_data_file(); $xml_file = ob_get_contents(); ob_end_clean(); return $xml_file; } 

如果很遥远,许多人都说curl是要走的路。 如果不存在,请尝试socket_createfsockopen 。 如果没有工作…改变您的托pipe服务提供商

如果你有它,使用curl是你最好的select。

您可以通过执行phpinfo()来查看它是否被启用,并在页面中searchcurl。

如果启用,请尝试以下操作:

 $curl_handle=curl_init(); curl_setopt($curl_handle, CURLOPT_URL, SITE_PATH . 'cms/data.php'); $xml_file = curl_exec($curl_handle); curl_close($curl_handle); 

如果你想读取一个没有file_get_contents()的URL生成的XML,那么你可能会想看看cURL