2011-08-17 34 views
0

我目前有一個非常簡單的新聞系統,它使用DOMDocument->load()從本地文件中讀取RSS。此外,還有一個非常簡單的後端,可將項目添加到已加載的Feed中,並使用DOMDocument->save()將其保存回來。保存DOMDocument問題(也許使用cURL?)

這可以在我的測試服務器上正常工作,但是在部署到客戶端時,保存操作會失敗並顯示500錯誤。我認爲這是由於他們有限制,這也阻止了使用fopenfile_get_contents,雖然我很困惑如何加載XML罰款,但不保存回來。

因此,其實我有兩個問題(調皮,我知道):

  1. 確實DOM文檔的保存方法,從負荷很大不同,什麼是用於寫文件的基礎技術?
  2. 我該如何去使用cURL將DOMDocument對象保存爲XML(因爲我知道cURL是允許的)?

對於它的價值,這裏是負載的刪減版本/保存:

//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

*(protip)*看看你的錯誤日誌,而不是假設。錯誤的原因將在那裏。你可能會發現它根本不是DOM相關的。 – Gordon

+0

很遺憾,我無法訪問這些信息,而IT人員的響應速度非常慢。當我終於再次聽到他們的消息時,我希望能有一個可行的解決方案。 – shanethehat

回答

0

捲曲和DOM沒有太多的做對方。捲曲只是獲取指定的資源(或將數據發送到資源)。 DOM解析xml/html樹。事實上,你可以指向一個特定的URL並獲得該URL的內容是PHP的基於文件的功能允許URL的副產品。

DOM和CURL之間沒有關聯,所以您不能讓DOM調用curl來爲您提取/保存。您必須使用CURL來獲取某些資源並將其保存到臨時文件(或變量)中,然後將該文件/變量用作DOM中的源。副版本也一樣--DOM無法調用curl來保存文件。

鑑於你的加載/保存調用沒有使用URL(只是一個本地文件路徑),我會檢查news_rss.xml文件的權限。一般來說,大多數系統上的大多數文件都是可讀的,但不是每個人都有寫權限。

+0

你是對的。當我終於從客戶的IT部門收到回覆時,事實證明他們已經阻止了XML文件的動態寫入作爲安全措施。令人驚訝的是,該文件仍然顯示爲可寫,但服務器決定拋出一個500來代替。 – shanethehat