我正在尝试调用simplexml_load_file,其中$ url参数是另一个.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,它将正常工作,但当文件位于同一服务器时,我得到“无法加载外部实体”错误。
我发现问题可能来自网址中的参数。 例如:
$ var1 = file('dosomething.php'); 工作正常
但$ var1 = file('dosomething.php?id = 1'); 返回“无法打开流”错误
我需要能够将这些参数添加到网址中,有没有办法做到这一点?
答案 0 :(得分:1)
问题与allow-url-fopen
不一样,因为你说它在远程服务器上工作正常
您打电话访问本地服务器的URL是什么?也许尽量避免使用像http://localhost/something.php
这样的名称,并使用仅像http://127.0.0.1/something.php
一样使用IP地址。
答案 1 :(得分:0)
如果参数是一个URL,PHP将发出一个套接字请求,所以检查你的PHP.ini设置,例如这个 http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
但是通过直接将参数包含在脚本中加载生成XML的脚本可能更优雅,更快,否则你基本上只会用无用的额外请求强调你的web服务器