2011-08-26 85 views
1

尝试使用asXML()更新XML文件时出现错误。该脚本使用SimpleXMLElement加载xml文件并更改数据。asXML()和save()之间的区别SimpleXMLElement和DOMDocument

错误似乎与权限有关。该文件夹和文件具有读取写入权限。

Warning: SimpleXMLElement::asXML(communities.xml) simpleelement.asxml failed to open stream: permission denied in c:\path\make_update.php. 

PHP脚本

<?php 

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

function make_update($nodeid, $name, $top, $left, $width, $height) { 

$nodes = new SimpleXMLElement('communities.xml', null, true); 

$returnArray = $nodes->xpath("//COMMUNITY[@ID='$nodeid']"); 
$node = $returnArray[0]; 
$node->TOP = $top; 

$nodes->asXML('communities.xml'); 

return $node->TOP; 
} 

echo make_update(trim($_REQUEST['nodeid']),trim($_REQUEST['name']),trim($_REQUEST['top']),trim($_REQUEST['left']),trim($_REQUEST['width']),trim($_REQUEST['height'])); 

?> 

在其他脚本我加载与DOM文档的XML文件,并保存$dom->save('file.xml');。 SimpleXMLELement和DOMDOcument之间或者asXML()和save()之间有区别吗?

UPDATE 1

PHP脚本是通过从JavaScript调用动态创建的div AJAX调用。如果div在页面中不是静态的,是否会导致权限问题?

更新2

更多关于这个脚本是如何被调用的细节......我可拖动的div。当拖动停止时,我调用一个使ajax调用的javascript函数。这是此脚本的行为与没有任何权限问题的其他行为之间的一个重要区别。在这种结构中,PHP脚本与HTML页面中的用户定义函数调用的权限不同吗?

$('#dragdiv').draggable({ stop: function(event, ui) { update_div($nodeid) } }); 

因为一些PHP脚本没有这样的权限问题,必须有怎样的脚本是从拖动功能称为链接。

回答

0

SimpleXMLELement和DOMDOcument之间还是asXML()和save()之间的差异解释了这一点?

如果DIV不是静态的页面,这可能导致权限问题?

再次,没有。


如果简洁,错误是描述性的。上面的PHP脚本没有必要的文件系统权限来在请求的位置写入该文件。在不知道更多细节的情况下,转入教人 - 调试 - 脚本模式,这里的答案只会重复这种情绪。

一个好的起点是去看看文件的权限是什么,并将其与PHP脚本的可用权限进行比较。

0

为拥有者,系统,iisuser,包含XML的服务器目录上的每个人创建权限读写。这解决了问题。这似乎并不安全。但是,这工作。

相关问题