2011-10-07 7 views
2

리눅스에서 PHP를 사용하여 공유되지 않은 업로드를 제공해야합니다.아파치가 PHP에서 쓸 수 있지만 파일을 제공하지 않는 디렉토리

파일 업로드를 제대로 처리하고 원하는 폴더로 이동할 수 있습니다. 제가 물어보고 싶은 것은 어떻게하면 누군가가 폴더와 파일 이름을 알고 있어도 브라우저를 통해 파일을 다운로드 할 수 없도록 만들 수 있다는 것입니다.

즉, 파일을 폴더로 이동할 수 있지만 해당 폴더에서 파일을 제공 할 수 없도록하려면 apache가 필요합니다.

php는 docroot 외부 파일에 쓸 수 있습니까? htaccess로 할 수있는 것이 있습니까? 아니면 그냥 리눅스 디렉토리 허가?

나는 빈 index.html을 만들려고하고 파일에 이름이 긴 임의의 문자열 (추측 할 수 없도록)이 포함되어 있지만 더 좋은 방법이 있어야한다고 결정했습니다.

감사합니다.

답변

2

Apache DocumentRoot 외부로 파일을 업로드하십시오.

I.E.

DocumentRoot /var/www/public/ 

(당신의 PHP 파일이있는 곳)

그리고 의/var/www가에서 업로드/업로드/

+0

그래서 나는 www가 맞다고 생각합니다. 이론적으로 (리눅스 사용 권한에 따라) 해당 폴더에 대한 액세스 권한을 가진 - 데이터 사용자 (아파치가 실행중인 사용자)는 docroot 외부에 있기 때문에 해당 폴더를 읽을 수 없습니까? PHP는 쉘에서 로그인 한 사용자로서 더 많이 작용합니다. – lynks

+0

아파치는 그것을 읽을 수 있기 때문에 (PHP로 파일을 사용할 수있게 될 것입니다), 외부로는 제공되지 않습니다. 아파치는 documentRoot 안에있는 것을 방문자에게만 제공합니다. – Damien

1

너의 거의 새로운 문제입니다 - 많은 사람들이 (당신이 진정 포함)이 어떤 시점에서 다양한 파일 거래자가 사용하는 "업로드"디렉토리를 찾았습니다 ... 다행히도 해결책은 간단합니다 ...

유닉스 (물론 윈도우도 마찬가지입니다) 파일과 디렉토리를 만들 수 있습니다 작가 사용자 또는 그룹에 대해이지만 은 읽을 수있는이 아닙니다. 때로는 "부정적인 권한"이라고 부르기도하며 잘못된 설정을 한 개인 (그리고 스크립트가 만든 스크립트)도 그러한 설정에서 눈살을 찌푸리지만 잘못된 것은 아닙니다.

예를 들어, 내 서버의 실제 파일은 다음과 같습니다. I ("mi")가 소유하고 있고 그룹 "www"(httpd가 실행중인)는 으로을 쓸 수 있습니다. 그러나 이라고 읽을 수 없습니다. 시스템의 다른 모든 합법적 인 사용자가 (당신이 나 설정에 싶지 않을 수도 있음)를 읽을 수 있습니다

-rw--w-r-- 1 mi www .... /home/mi/public_html/.../download.log 

위의 설정에 대한 (chmod를 함께 사용의 경우) 진수 모드는 당신이 그것을 변경할 수 있습니다 0624.입니다 귀하의 필요에 맞게. 예를 들어 시스템의 다른 사용자가 파일에 전혀 액세스 할 수없는 경우 0620을 사용합니다.

또한 Apache의 권한 설정을 사용하여 디렉토리에서 서비스하는 것을 방지 할 수는 있지만 그럴 수는 있습니다. Unix 파일 시스템 권한보다 훨씬 간단합니다. 그것은 또한 추가 작업을 당신이 다른 웹 서버로 아파치에서 전환하거나, 아파치 안에서 실행중인 PHP에서 응용 프로그램 서버로 이동해야 할 것입니다 ... 또는

관련 문제