2009-08-10 5 views
2

서버 측 포함을 사용하여 서버 외부에있는 파일에 액세스 할 수 있습니까?서버 측 포함

그렇지 않은 경우 어떻게해야합니까?

+0

드라이브에있는 폴더 외부에있는 txt 파일의 정보에 액세스하려고합니다. 사람들이 해당 파일에 정보를 업로드 할 수 있고 사이트가 없어도 웹 사이트에 표시 될 수 있습니다. –

+0

와우, 내가 looooong 시간 이후 SSI에 대해 듣지 않았다 ... –

답변

1

PHP에서이를 수행하기 위해 file_get_contents() 또는 fopen()과 같은 작업을 수행 할 수 있습니다 (예 :

<?php 
    echo file_get_contents('http://www.example.com/include'); 
?> 
3

도메인 외부에서 데이터를 가져 오려면 cURL을 사용하십시오. 수신 한 데이터를 실행하려면 eval()으로 이동하십시오. 그러나 이것이 페이지의 '출력'을 얻게 될지 미리주의하십시오. 의미는 '.php'페이지와 같이 실행 된 페이지라면 처리 된 결과로 나오는 데이터를 얻게됩니다.

같은이 file_get_contents() 마찬가지입니다
<?php 
// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

// grab URL and pass it to the browser 
curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 
?> 

fopen()

이 파일의 '실제'내용을 잡아 원하는 경우, 다른 서버에 종류의 프록시를 설정하려는 것이다. 서버 측 스크립트가 어떻게 작동하는지에 대한 보안 결함이 될 수 있기 때문에 서버에서이 작업을 수행 할 수 없습니다. 당신이 요청하는 모든 파일의 내용을 줄 것이다

<?php 

// Read the requested file out 
readfile($_GET['file']); 

은 : 다른 사람이 그것을 발견하면

http://test.com/handler.php?file=handler.php

그러나, 그것은 위험 할 수 있습니다. 당신은 서버 소프트웨어를 언급하지 않는하지만 SSI가 mod_include 모듈에 의해 제공되는 아파치를 가정합니다

<!--# include virtual="http://www.stackoverflow.com/" --> 
0

예,의 nginx의 서버 사이드는 전체 URL의 예를 사용할 수 있습니다 포함되어 있습니다. 요소가 포함되어있어 원격 파일을 허용하지 않습니다. 그러나 exec을 사용하면 외부 도구를 실행할 수 있습니다. 이 번호를 사용하여 wget 또는 원하는 다른 명령을 호출 할 수 있습니다.

그러나 복잡하지는 않습니다. 로컬 시스템에 원격 디렉토리를 마운트 할 수있는 경우 일반 심볼릭 링크를 만들고 을 사용하여을 포함 할 수 있습니다.

또는 이미 제안했듯이 PHP는 사용하기가 정말 쉽습니다.

1

: