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