使用DOMDocument保存xml文件时出现问题 - > save('filename')

时间:2012-01-05 22:36:53

标签: php

我有一个简短的PHP程序,它加载XML文件(test02.xml),然后尝试将其保存在另一个文件中。

该计划是:

<?php
//The next three lines are needed to open a file for writing on the server I use.

$stream_options = array('ftp' => array('overwrite' => TRUE));
$stream_context = stream_context_create($stream_options);
$fxml = fopen("ftp://userid:password@www.yurowdesigns.com/public_html/programs/test03.xml","w",0,$stream_context);

//The next three lines create a new DOMDocument, load the input file, "test02.xml"  
//and attempt to save the loaded file in the output file "test03.xml"

$doc = new DOMDocument;
$doc->load("test02.xml");
$doc->save("test03.xml");
?>

文件test03.xml正确打开,如果不存在则创建。但是,它没有输出。加载的文件test02.xml是非空的,格式良好的XML。我已经使用其他PHP程序加载并成功读取它。

当我运行上述程序时,我收到消息:

警告:DOMDocument :: save(test03.xml)[domdocument.save]:无法打开流:第8行/home/yurow/wwwroot/yurowdesigns.com/programs/xmlTest.php中的权限被拒绝。

我在

检查了'save'命令的语法

phpbuilder.com/manual/en/function.dom-domdocument-save.php

它似乎是正确的。不知道是什么导致了这个???

2 个答案:

答案 0 :(得分:3)

尝试创建文件的用户不是“yurow”(可能有权创建该文件的用户)。相反,它是一个用户,如“apache”或“httpd”。通常,系统设置为禁止apache / httpd用户在Web根目录中创建文件。这是为了安全目的而做的,我不建议通过给你的webroot提供apache / httpd写访问来绕过它。相反,您可以在/ home / yurow内部创建文档(只是不在/ home / yurow / wwwroot内)。一个例子可能是:/home/yurow/xmldata/test02.xml。您可能需要调整此目录的权限以允许apache / httpd用户写入它。

答案 1 :(得分:1)

权限被拒绝意味着您的脚本无法将数据写入xml文件,因为该文件没有将数据写入其中的正确权限。请尝试以下方法:

  1. 创建空xml文件(test03.xml)。
  2. 根据您的服务器,将xml文件权限更改为775或777。
  3. 将xml数据保存到新文件中。
  4. 希望这有帮助