保存DOMDocument问题(也许使用cURL?)

时间:2011-08-17 14:08:40

标签: php curl domdocument

我目前有一个非常简单的新闻系统,使用DOMDocument->load()从本地文件读取RSS。此外,还有一个非常简单的后端,可以将项目添加到已加载的Feed中,并使用DOMDocument->save()将其保存回来。

这在我的测试服务器上工作正常,但是当部署到客户端时,保存操作失败并出现500错误。我认为这是由于他们已经存在的限制,这也限制了fopenfile_get_contents的使用,尽管我对如何加载XML很好感到困惑,但不能再将它保存回来。 / p>

所以我真的有两个问题(顽皮,我知道):

  1. DOMDocument的保存方法与加载有很大不同,编写文件的底层技术是什么?
  2. 如何使用cURL将DOMDocument对象保存为XML(因为我知道允许使用cURL)?
  3. 对于它的价值,这里是加载/保存的截断版本:

    //load the xml
    $doc = new DOMDocument();
    $doc->load($_SERVER['DOCUMENT_ROOT'].'/news_rss.xml');
    $doc->formatOutput = true;
    //add some stuff to the xml ...
    
    //save it again
    $doc->save($_SERVER['DOCUMENT_ROOT'].'/news_rss.xml');
    

1 个答案:

答案 0 :(得分:0)

卷曲和dom彼此没有多大关系。 Curl只获取指定的资源(或将数据发送到资源)。 DOM解析xml / html树。您可以在特定URL上指向dom并获取该URL的内容,这是PHP基于文件的功能允许URL的副产品。

DOM和CURL之间没有链接,所以你不能让DOM调用curl来为你提取/保存。您必须使用CURL获取某些资源并将其保存到临时文件(或变量)中,然后将该文件/变量用作DOM中的源。副版本也是如此 - DOM无法调用curl来保存文件。

鉴于您的加载/保存调用未使用URL(只是本地文件路径),我将检查news_rss.xml文件的权限。通常,系统上的大多数文件都是可供所有人阅读的,但不是每个人都有写权限。