Разница между SimpleXMLElement и DOMDocument, между asXML () и save () - PullRequest
1 голос
/ 26 августа 2011

Я получаю сообщение об ошибке при попытке обновить файл XML с помощью asXML (). Сценарий использует 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']));

?>

В других скриптах я загружаю xml-файл с DOMDocument и сохраняю с $dom->save('file.xml');. Есть ли разница между SimpleXMLELement и DOMDOcument или между asXML () и save (), которые это объясняют?

ОБНОВЛЕНИЕ 1

Скрипт php вызывается через ajax из javascript, вызываемого в динамически создаваемом div. Если div не статичен на странице, это может вызвать проблемы с правами доступа?

ОБНОВЛЕНИЕ 2

Подробнее о том, как называется этот скрипт ... У меня есть перетаскиваемые элементы div. Когда перетаскивание останавливается, я вызываю функцию javascript, которая делает вызов ajax. Это одно важное различие между поведением этого скрипта и другим, где нет проблем с разрешениями. В этой структуре имеет ли скрипт PHP другие права доступа, чем при вызове пользовательской функции на странице HTML?

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

Поскольку у некоторых php-скриптов нет такой проблемы с разрешениями, должна быть ссылка на то, как скрипт вызывается из функции перетаскивания.

Ответы [ 2 ]

0 голосов
/ 27 августа 2011

Сделано разрешение на чтение и запись для владельца, системы, iisuser, всех на сервере, в каталоге, содержащем XML. Это решило проблему. Это не кажется безопасным. Но это сработало.

0 голосов
/ 26 августа 2011

Есть ли разница между SimpleXMLELement и DOMDOcument или между asXML () и save (), что объясняет это?

номер

Если div не статичен на странице, может ли это вызвать проблемы с разрешениями?

Опять нет.


Ошибка носит описательный характер, если она краткая. Вышеуказанный PHP-скрипт не имеет необходимых разрешений файловой системы для записи этого файла в запрошенном месте. Не зная больше подробностей и не переходя в режим обучения кого-то для отладки своих сценариев, ответы здесь будут только повторять это мнение.

Хорошей отправной точкой было бы пойти и посмотреть, каковы на самом деле права доступа к файлу, и сравнить это с правами, доступными для сценария PHP.

...