【问题标题】:Difference between SimpleXMLElement and DOMDocument, between asXML() and save()SimpleXMLElement 和 DOMDocument 之间的区别,asXML() 和 save() 之间的区别
【发布时间】:2011-08-26 16:18:13
【问题描述】:

尝试使用 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-&gt;save('file.xml'); 保存。 SimpleXMLELement 和 DOMDOcument 之间或 asXML() 和 save() 之间有区别吗?

更新 1

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

更新 2

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

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

由于有几个php脚本没有那个权限问题,所以必须有一个链接可以从可拖动函数中调用脚本。

【问题讨论】:

    标签: php xml simplexml domdocument


    【解决方案1】:

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

    没有。

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

    再次,不。


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

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

    【讨论】:

      【解决方案2】:

      对包含 XML 的服务器目录上的所有者、系统、iisuser 和每个人都设置了读写权限。这解决了问题。这似乎并不安全。但这行得通。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-23
        • 2015-11-18
        • 2016-01-08
        • 1970-01-01
        • 2018-12-30
        • 1970-01-01
        相关资源
        最近更新 更多