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

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

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

Итак, вопрос в этом. Файл data.php генерирует xml-код.

Как я могу выполнить это и получить данные 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....
}

Ответ 3

Да, если у вас отключены обертки URL, вы должны использовать сокеты или, еще лучше, библиотеку cURL.

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

Если у вас есть это, использование 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);