Я получаю сообщение об ошибке при попытке обновить файл 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-скриптов нет такой проблемы с разрешениями, должна быть ссылка на то, как скрипт вызывается из функции перетаскивания.