Альтернатива 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);