[英]How to save an XML file on the web server using PHP?
我是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文件保存在服务器上?
$dom->save("test.xml");
没有错$dom->save("test.xml");
。
不过,您不需要使用DOM进行保存。 使用SimpleXML也可以做到这一点:
$xml->saveXML("test.xml");
确保目标文件夹可写。 使用绝对路径来确保您实际上在正确的位置查找文件。
我看不到您的代码有什么问题。 我认为您有权限问题。
PHP以以下两个用户之一的身份运行:
nobody
或可能是www-data
(又称Web服务器使用的系统用户) 为了使PHP以拥有Web根目录(即您)的用户身份运行,必须为suexec启用php。 您无法写入具有0644
权限的文件的事实表明,事实并非如此。
您有两种选择:
我强烈推荐第一个而不是第二个。 但是,您并非总是有这样的选择。 如果您的主机(或sysadmin或任何人)无法或不会为PHP启用suexec,则必须授予文件0777
权限,即rwxrwxrwx
。
您可能要先通过ssh登录并使用touch
命令(或目录,如果需要通过mkdir
)创建输出文件,然后为其提供所需的权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.