gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 02:55:13 25 4
gpt4 key购买 nike

我是 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 作为以下两个用户之一运行:

  • nobody 或者可能是 www-data(又名网络服务器使用的系统用户)
  • 您的用户名

要使 PHP 以拥有 Web 根用户(即您)的身份运行,必须为 PHP 启用 suexec。您不能写入具有 0644 权限的文件这一事实几乎说明了事实并非如此。

你有两个选择:

  • 重新配置服务器,使 PHP 以拥有 web root 的用户身份运行
  • 使文件世界可写

我强烈推荐第一个而不是第二个。但是,您并不总是有这种选择。如果您的主机(或系统管理员,或其他任何人)不能或不会为 PHP 启用 suexec,您将必须授予文件 0777 权限,又名 rwxrwxrwx

您可能希望通过 ssh 登录并首先使用 touch 命令创建输出文件(或目录,如果这是您通过 mkdir 需要的),然后将其提供所需的权限。

关于php - 如何使用 PHP 在 Web 服务器上保存 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3351652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com