Альтернатива file_get_contents?

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

Проблема в том, что на сервере отключен доступ к файлам URL. Я не могу включить его, его хостинг.

Итак, вопрос в этом. Файл 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 .

Если это часть вашего сайта, обратитесь к нему с файловой системой, а не с веб-URL. /var/www/... , а не http://domain.tld/...

Если файл является локальным, так как ваш комментарий о SITE_PATH предлагает, довольно просто выполнить сценарий и кэшировать результат в переменной с помощью функций управления выходом :

 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_create или fsockopen . Если ничего не получится … измените своего хостинг-провайдера.

Если вы пытаетесь прочитать XML, сгенерированный с URL-адреса без file_get_contents() то вы, вероятно, захотите взглянуть на cURL

Если у вас есть это, использование curl – ваш лучший вариант.

Вы можете увидеть, разрешено ли это с помощью phpinfo() и поиска на странице для завивки.

Если он включен, попробуйте следующее:

 $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);