2012-07-08 3 views
1

저는 현재 여러 대의 서버가 있으며, 주요 서버는 웹 서버와 내부 스토리지 서버입니다. 데이터는 SQL 서버 데이터베이스에 저장됩니다.PHP가 다른 서버와 보안

사용자에게 너무 많은 액세스 권한을 부여하지 않으면 웹 서버의 사용자에게 표시 할 스토리지 서버의 특정 문서를 어떻게 가져올 수 있습니까?

예를 들어 저장소 서버에 c : /memberID/info.pdf 문서가 있으며 내부 저장소 서버에 대한 액세스 권한을 부여하지 않고 PHP를 통해 클라이언트에 표시하려고합니다.

나는 이것이 의미가 있기를 바랍니다. 스토리지 서버는 웹 서버에 장착되거나 파일이 HTTP를 통해 개인적으로 사용할 수있는 경우

답변

1

readfile로 봐뿐만 아니라 headers

<?php 
$file = 'monkey.gif'; 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit; 
} 
?> 
+0

에만 작동합니다. – tftd

+0

\\ 서버를 통해 웹 서버에서 스토리지 서버에 액세스 할 수 있습니다. 내 파일은 데이터베이스에 \\ server \ memberno.pdf로 저장되어 있습니다. 'document.pdf'로 링크를 표시하고 싶습니다. 이것을 어떻게 할 수 있습니까? – user1138694

+0

'$ file' 변수를'$ file = '\\ server \ memberno.pdf'(필요한 경우 적절히 이스케이프해야 함)로 지정하십시오. tftd, 나는 그것이 도달 할 수있는 파일들에 대해서만 작동한다는 것을 알고 있지만 파일들이 웹 서버로부터 도달 할 수 있다는 것을 이해하고있다. – Fabrizio

관련 문제