2011-03-25 3 views
1

CHDMOD 777이며 htpasswd로 보호되는 'templates'라는 폴더가 있습니다. 이것은 여전히 ​​PHP 업로드 스크립트를 사용하여 해당 폴더에 파일을 업로드 할 수 있으며 외부의 사람들은이 파일에 액세스 할 수 없다는 것을 의미합니다.보호 된 디렉토리에 PHP 스크립트 허용

phpmailer 클래스를 사용하는 스크립트도 있습니다. 이 스크립트는 전자 메일을 보내고 보호 된 폴더에있는 파일을 첨부합니다.

내 문제는이 보호 기능을 사용하도록 설정했기 때문에 첨부 파일이없는 이메일을 수신한다는 것입니다. htpasswd 보호 기능이 없으면 첨부 파일 만 수신합니다.

내가 할 수있는 아이디어가 있습니까?

+1

파일과 메일러 스크립트가 동일한 서버에 있으면 보호 기능을 사용해야합니다. 파일을 어떻게 첨부합니까? – Maerlyn

+0

+1 분명히 표현하기 – Smandoli

답변

1

PHP는 웹 서버의 htpasswd 보호 범위 밖에서 작동합니다. 스크립트가 실행되면 파일 시스템 (최소한 웹 서버의 userid/groupid가 만질 수있는 것들)에 대해 자유롭게 관리 할 수 ​​있습니다. 첨부 된 파일의 경로를 URL로 제공하지 않는 한 해당 파일의 모든 작업은 웹 서버가 아닌 일반 파일 시스템 작업을 거치므로 htpasswd 보호가 그림에 입력되지 않습니다.

파일이 첨부되어 있지 않으면 스크립트를 검사하여 파일에 적절한 경로를 제공하고 웹 서버의 사용자 ID에 파일에 대한 읽기 권한이 있는지 확인합니다.

+0

고맙습니다. 문제는 경로가 잘못되었다는 것입니다! – 45808

1

하면 스크립트의 URL로

/var/www/example.com/httpdocs/uploads/foo.jpg 

하지처럼 파일 시스템 경로로 스크립트가 파일에 액세스 할 수 있습니다

http://example.com/uploads/foo.jpg 

확인을 첨부 파일에 액세스되어 있는지 확인

<?php 
if(!is_readable($file)) { 
    $user = get_current_user(); 
    echo 'Error: '.$user.' cannot access '.$file; 
    exit(); 
} 
?>