2013-03-08 2 views
0

Я пытаюсь вызвать файл simplexml_load_file с параметром $ url, являющимся другим .php-файлом, который затем произведет некоторые вычисления, а после этого он будет «эхо» строки, содержащей xml-код.simplexml_load_file и не удалось загрузить внешнюю сущность

Это выглядит примерно так:

$urlrequest= $_SERVER['DOCUMENT_ROOT']."/generateXML.php?id=5&output=xml"; 
$xml = simplexml_load_file($urlrequest); 

где generateXML.php будет что-то вроде:

<?php 

//do some random code 

$aux= '<?xml version="1.0" encoding="UTF-8" ?>'; 
$aux.= "<item>"; 
$aux.= "<name>John</name>"; 
$aux.= "<location>somewhere</location>"; 
$aux.= "</item>"; 

echo $aux; 
?> 

Проблема в том, если generateXML.php находится на удаленном IP будет работать отлично, но когда файл находится на том же сервере, я получаю ошибку «не удалось загрузить внешнюю сущность».

Я выяснил, что проблема может возникнуть из параметров в URL-адресе. Например:

$ var1 = file ('dosomething.php'); работает отлично

но $ var1 = файл ('dosomething.php? Id = 1'); возвращает ошибку «не удалось открыть»

Мне нужно уметь добавлять эти параметры к URL-адресу, есть ли способ сделать это?

+0

Посмотрите на это http://stackoverflow.com/questions/3488425/php-ini-file-get-contents-external-url – Pitchinnate

+0

Где находится заголовок для XML? –

ответ

0

если аргумент является URL, PHP будет сделать запрос на сокет, поэтому проверить настройки php.ini, пример этого один http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

, но это, вероятно, более элегантными и быстрее, чтобы загрузить скрипт, который генерировать XML включив скрипт напрямую с параметрами, в противном случае вы просто подчеркиваете свой веб-сервер с бесполезным дополнительным запросом

1

Не похоже, что проблема связана с allow-url-fopen, потому что вы сказали, что он отлично работает на удаленном сервере.
Какой URL-адрес вы вызываете для доступа к локальному серверу? Возможно, попробуйте избежать имен, таких как http://localhost/something.php и использовать IP-аддоны только как http://127.0.0.1/something.php.

+0

Как вы сказали, allow-url-fopen не может быть проблемой, потому что проблема не появляется при вызове внешнего ip, и я уже проверил, что он включен в php.ini – EVL

Смежные вопросы