0

我正在尝试使用 $url 参数调用 simplexml_load_file 作为另一个 .php 文件,然后该文件将进行一些计算,然后,它将“回显”包含 xml 代码的字符串。

它看起来像这样:

$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=file('dosomething.php?id=1'); 返回“无法打开流”错误

我需要能够将这些参数添加到 url,有什么办法吗?

4

2 回答 2

1

看起来问题不大,allow-url-fopen因为您说它在远程服务器上运行良好。
你调用什么 URL 来访问你的本地服务器?也许尽量避免使用类似的名称http://localhost/something.php并仅使用 IP 地址,例如http://127.0.0.1/something.php.

于 2013-03-08T14:57:13.560 回答
0

如果参数是 URL,PHP 将发出一个套接字请求,因此请检查您的 PHP.ini 设置,例如 http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url -fopen

但是通过将脚本直接包含在参数中来加载生成 XML 的脚本可能更优雅、更快捷,否则你基本上只会用一个无用的附加请求来给你的网络服务器施加压力

于 2013-03-08T14:52:01.283 回答