微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用PHP在Web服务器上保存XML文件?

我是PHP的初学者,对XML操作一无所知.我正在处理如下所示的Google CSE注释XML:

  <?xml version="1.0" encoding="UTF-8" ?> 
- <Annotations>
- <Annotation about="http://sanspace.in/">
  <Label name="_cse_byxamvbyjpc" /> 
  </Annotation>
- <Annotation about="http://blog.sanspace.in/">
  <Label name="_cse_byxamvbyjpc" /> 
  </Annotation>
- <Annotation about="http://google.com/">
  <Label name="_cse_exclude_byxamvbyjpc" /> 
  </Annotation>
  </Annotations>

我想从上面显示文件中实现这一点:

  <?xml version="1.0" encoding="UTF-8" ?> 
- <Annotations>
- <Annotation about="http://sanspace.in/">
  <Label name="testString1" /> 
  </Annotation>
- <Annotation about="http://blog.sanspace.in/">
  <Label name="testString2" /> 
  </Annotation>
- <Annotation about="http://google.com/">
  <Label name="testString2" /> 
  </Annotation>
  </Annotations>

到目前为止,我已经尝试过:

<?PHP
if (file_exists('test.xml'))
  {
  $xml = simplexml_load_file('test.xml');
  }
else
  {
  exit('Error.');
  }
foreach($xml->Annotation as $annotation)
    {
    if ($annotation["about"]=="http://sanspace.in/") 
        {  $annotation->Label["name"]="testString1";  } 
    else 
        {  $annotation->Label["name"]="testString2";  } } 

$dom = new DOMDocument('1.0'); 
$dom->preserveWhiteSpace = false; 
$dom->formatOutput = true; 
$dom->loadXML($xml->asXML()); 
echo $dom->saveXML();
$dom->save("test.xml");
?> 

代码执行任务,但不会将其保存到文件中.

我的问题是,$dom-> save(“ test.xml”);怎么了?声明?
如何将XML文件保存在服务器上?

解决方法:

我看不到您的代码有什么问题.我认为您有权限问题.

PHP以以下两个用户之一的身份运行:

>没有人或可能是www数据(又称Web服务器使用的系统用户)
>您的用户名

为了使PHP以拥有Web根目录(即您)的用户身份运行,必须为suexec启用PHP.您无法写入具有0644权限的文件的事实表明,事实并非如此.

您有两种选择:

>重新配置服务器,以便PHP以拥有Web根目录的用户身份运行
>使文件世界可写

我强烈推荐第一个而不是第二个.但是,您并非总是有这样的选择.如果您的主机(或sysadmin或任何人)无法或不会为PHP启用suexec,则必须授予文件0777权限,即rwxrwxrwx.

您可能希望先通过ssh登录并使用touch命令(或目录,如果需要通过mkdir则创建目录)创建输出文件,然后为其授予所需的权限.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐