2012-05-30 2 views
0

서버 [Linux OS]에서 실행중인 작은 CGI 스크립트가 있습니다. 스크립트 출력의 일부 ..URL 오류가 분명히있을 때 찾을 수 없습니다.

<tr><td valign="center">Lol</td><td valign="center">10112</td><td><a 
href="/home/pathtopdf/abc.pdf">abc.pdf</a></td></tr> 

입니다 다음 그러나 나는이 abc.pdf 하이퍼 링크를 클릭하면 브라우저에 오류 메시지가 표시됩니다 : PDF 파일과 경로가 확실히 존재하면서 URL /home/pathtopdf/abc.pdf was not found on the server. 및 경로에있는 모든 파일과 폴더 [ pdf 포함]에는 완전한 허가가 있습니다.

내 서버 위치는 /srv/www/cgi-bin에서 /srv/www 및 스크립트 @,하지만 난 PDF로 링크를 넣을 때 오류 메시지가 The requested URL '/srv/www/for_html/abc.pdf' resolves to a file which is marked executable but is not a CGI file; retrieving it is forbidden. 다시 권한이 파일이 있었다

<tr><td valign="center">Lol</td><td valign="center">10112</td><td><a 
href="/srv/www/for_html/abc.pdf">abc.pdf</a></td></tr> 

다음과 같다.

무엇이 문제 일 수 있습니까?

+1

URL은 웹 서버 루트 폴더에 없습니다. – Blender

+2

전체 파일 시스템의 파일을 제공하도록 웹 서버를 구성 했습니까? – Paulpro

+2

당신은 그것이 거기에 있다고 생각합니까? 뭔가 '/ home'은 실제로 웹 사이트의 디렉토리가 아니라는 것을 알려줍니다. '/'는 시스템의 루트가 아닌 루트 ** 웹 ** 디렉토리로갑니다. – animuson

답변

3

문제는 웹 루트 외부에서 파일을 요청하려고하는 것입니다. 그래서를 클릭하면, 브라우저는 정말

http://example.com/home/pathtopdf/abc.pdf 

하지

/home/pathtopdf/abc.pdf 

당신은 당신의 아파치 설정 파일을 편집하고 (예를 들어 다운로드) 하위 도메인에서 해당 디렉토리에 가상 호스트를 추가 할 수 있습니다

0
을 요청

편집 한 후 서버에서 직접 file:// 프로토콜을 사용한다고 가정합니다. 내가 당신의 .pdf의 파일 권한에서 실행 비트를 제거하는 것입니다. 셸에서 실행 :

chmod -x /srv/www/for_html/abc.pdf 
+0

파일이/srv/www/아래에 있고/home/..... 아래에있을 때 문제가 해결되지 않았습니다. – ScarCode

+0

@spyke 집에있는 파일에 대한 다른 권한 문제가있을 수 있습니다. 웹 서버는 다운로드하려는 파일을 읽을 수 있어야합니다. 파일을 읽는 다른 사용자와 관련이 없다면 웹 서버 (및 다른 사용자)가 읽을 수 있도록'-x '대신'+ r'을 사용하는 것을 제외하고 위와 동일한 절차를 수행 할 수 있습니다. – Paulpro

관련 문제