2011-08-17 4 views
0

현재 로컬 파일에서 DOMDocument->load()을 사용하여 RSS를 읽는 매우 간단한 뉴스 시스템을 사용하고 있습니다. 또한로드 된 피드에 항목을 추가하고 DOMDocument->save()을 사용하여 다시 저장하는 매우 간단한 백엔드가 있습니다.DOMDocument 문제를 저장하십시오 (아마도 cURL을 사용합니까?)

내 테스트 서버에서 제대로 작동하지만 클라이언트에 배포 할 때 저장 작업이 500 오류와 함께 실패합니다. 나는 이것이 비록 내가 XML을 잘로드 할 수있는 방법으로 혼란 스럽긴하지만 fopenfile_get_contents의 사용을 막는 한계로 인한 것이라고 생각한다.하지만 다시 저장하지는 마라.

  1. 합니까있는 DOMDocument의 저장 방법은 부하에서 실질적으로 다를 및 파일을 작성하는 데 사용되는 기본 기술은 무엇인가 :

    그래서 정말 내가 (나는 알고있다, 나쁜) 두 가지 질문이?

  2. cURL을 사용하여 XML로 DOMDocument 객체를 저장하는 방법 (어떻게 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은 서로 할 일이 많이가 없습니다. Curl은 지정된 리소스를 가져 오거나 리소스에 데이터를 보냅니다. DOM은 xml/html 트리를 구문 분석합니다. 특정 URL을 가리키고 해당 URL의 내용을 가져올 수 있다는 사실은 URL을 허용하는 PHP의 파일 기반 함수의 부산물입니다.

DOM과 CURL 사이에는 링크가 없으므로 DOM에서 curl을 호출하여 가져 오거나 저장할 수 없습니다. CURL을 사용하여 일부 리소스를 가져 와서 임시 파일 (또는 변수)에 저장 한 다음 해당 파일/변수를 DOM의 소스로 사용해야합니다. 동일한 버전의 부 버전도 있습니다. DOM은 파일을 저장하기 위해 컬을 호출 할 수 없습니다.

로드/저장 호출이 URL (로컬 파일 경로 만 사용)을 사용하지 않는다고 가정하면 news_rss.xml 파일에 대한 사용 권한을 확인합니다. 일반적으로 시스템의 대부분의 파일은 모든 사람이 읽을 수 있지만 모든 사람이 쓰기 권한을 가지고있는 것은 아닙니다.

+0

맞습니다. 클라이언트의 IT 부서에서 최종적으로 응답을 받으면 보안 조치로서 XML 파일의 동적 작성을 차단 한 것으로 나타났습니다. 놀랍게도 파일은 여전히 ​​쓰기 가능으로 표시되지만, 서버가 줄을 따라 어딘가에 500을 던지기로 결정했습니다. – shanethehat