2013-05-23 3 views
-1

나는 하나의 스크립트를 가지고 있는데, "main"PHP 스크립트라고 부르 자. 또 다른 스크립트가 있는데, "writer"라고 부른다. XML 파일이 있습니다. 내 "작가"는 db에서 정보를 가져 와서 XML에 기록합니다. 필자가 직접 작가를 실행하면 모든 작업이 정상적으로 처리됩니다.PHP는 포함 된 스크립트 파일에서 파일에 쓰기

지금 "내"기본 스크립트에서 "작가"를 실행하고 싶습니다. 문제는 필자의 메인에서 작성자 파일의 출력을 볼 수 있다는 것입니다 (테스트 목적으로 일부 에코를 추가합니다). 그러나 직접 실행할 때와 마찬가지로 XML 파일을 다시 작성하지는 않습니다.

이 문제를 어떻게 해결할 수 있습니까?

감사합니다. 주에서

코드 : 작가에서

<?php 
session_start(); 
include_once("./../writer.php"); 


    $_SESSION['make_sitemap'] = true; 

    echo 'ok'; 

?> 

코드 :

<?php 
session_start(); 
// include some utility files and header, also connection to db  

if($_SESSION['make_sitemap']){ 

$xml = '<?xml version="1.0" encoding="UTF-8"?>'; 

// some boring stuff with xml variable 


$fp = fopen('./myxml.xml', 'w'); 

fwrite($fp, $xml, strlen($xml)); 

fclose($fp); 

echo 'done'; 

} 

?> 

그게 모든 사람, 특별한 아무것도, 나는 생각한다. 그러나 그것이 재 작성되지 않는 이유는 무엇인지 모르겠습니다.

+1

로 사용합니다. –

+0

일부 코드는 좋을 것입니다. 그렇지 않으면 질문과 이미지를 동시에 읽을 수있는 능력이 부족합니다. – samayo

+0

괜찮 았으면 좋겠어요. :) –

답변

2

PHP의 상대 경로는 실행되는 위치에 따라 결정됩니다. 즉, PHP가 원래 요청을 실행하기 시작한 파일을 의미합니다. 즉, writer.php을 직접 치면 ./myxml.xml이 writer.php와 마찬가지로 main.php와 같은 디렉토리에 나타납니다.

더 나은 방법은 모든 경로가 $_SERVER["DOCUMENT_ROOT"]과 같은 상대적인 위치를 설정하는 것입니다. 이것은 당신이 같이 포함 일반에 알려진 위치의 몇 가지를 정의 할 수 있습니다 너무 지루하게되면

그래서 대신

./myxml.xml 

당신은

$_SERVER["DOCUMENT_ROOT"]."/path/to/my/myxml.xml" 

을 말할 것입니다. 다른 사람들이 언급을 서로

define("XML_PATH", $_SERVER["DOCUMENT_ROOT"]."/path/to/my"); 

다음 code` 항상 주어진이다`게시,

XML_SAVE_PATH."/myxml.xml" 
+0

당신은 완벽하게 맞습니다. 다음에 고려할 것입니다. 도와 줘서 고맙다! –

관련 문제