SimpleXMLElement和DOMDocument之间的区别,在asXML()和save()之间

时间:2011-08-26 16:18:14

标签: php xml simplexml domdocument

尝试使用asXML()更新XML文件时出错。该脚本使用SimpleXMLElement加载xml文件并更改数据。

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

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']));

?>

在其他脚本中,我使用DOMDocument加载xml文件,并使用$dom->save('file.xml');保存。 SimpleXMLELement和DOMDOcument之间或asXML()和save()之间有什么区别可以解释这个吗?

更新1

php脚本是通过动态创建的div中调用的javascript调用ajax来调用的。如果div在页面中不是静态的,那会导致权限问题吗?

更新2

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

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

由于多个php脚本没有该权限问题,因此必须有一个指向如何从可拖动函数调用脚本的链接。

2 个答案:

答案 0 :(得分:0)

  

SimpleXMLELement和DOMDOcument之间或asXML()和save()之间是否有区别?

没有

  

如果div在页面中不是静态的,是否会导致权限问题?

再次,不。


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

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

答案 1 :(得分:0)

为所有者,系统,iisuser,包含XML的服务器目录中的每个人提供权限读写。这解决了问题。这似乎不安全。但这很有效。