2012-03-29 3 views
0

쉬운 질문이 있지만 Google에서 답변을 찾지 못했습니다. 나는 다양한 서버에서 실행해야하는 응용 프로그램을 구축 중이며 루트, 서브 디렉토리 또는 다른 방법으로 설치되는지 알지 못합니다. 또한 IIS, Apache 또는 다른 유형의 od 서버에 설치되는지는 알지 못합니다. 나는 정말 불쾌한 문제가있다. 항상 좋은 상태로 업로드 디렉토리를 만드는 방법. 그 dir 업로드 응용 프로그램 폴더에있을 것입니다, 그래서 몇 가지 시작 지점이 있지만 적절한 업로드 dir 작성하는 방법을 알아낼 수 없습니다. 해당 파일이나 디렉토리, 그리고 '업로드/IMG'에 $ temp_name를 이동하는 또 다른 없습니다move_uploaded_file 업로드 디렉토리를 만드는 방법

//tried this for first time 
$upload_dir = getcwd().'upload/img'; 
//then tried this 
$upload_dir = 'upload/img'; 
//and tried couple of others, but more lame, so I will not post it... 

것은 경고 스트림을 열지 못했습니다 말한다 발생한다는 것입니다.

정말 어디서 잘못되었는지 모릅니다. 나는 이것이 불충분 한 질문이지만, 그것을 잘하는 방법을 모른다.

+0

트릭을 수행 한 솔루션은 getcwd()와 내부 경로 사이에 누락 된 '/'를 추가하는 것입니다. 이것은 트릭을 완료했습니다. 내가 왜 이드를 그리워했는지 모르겠다. –

답변

1

마법 매크로 __FILE__을 사용하면 현재 파일의 경로, 즉 스크립트의 절대 경로를 가져올 수 있습니다. 현재 폴더를 가져 오려면 dirname(__FILE__)을 사용하십시오.

경로 논리의 나머지 부분을 기본으로 할 수 있어야합니다.

+0

나는 그것을 시도했지만 코드는 dir 트리의 depper 클래스에 있으므로, 그 파일의 위치를 ​​얻었고, 그것은 나에게 좋지 않다. getcwd(). 시도 '업로드/img'더 나은 ... –

0

우선 응용 프로그램 설계자는 업로드 디렉토리에 적합한 위치를 선택해야합니다 (또는 사용자가 설치시 선택하도록하십시오). 이 위치는 일반적으로 웹 디렉토리 루트 외부에 있도록 선택되므로 아무도 URL을 입력하고 업로드 된 파일에 직접 액세스 할 수 없지만 다른 방법으로이 파일을 배치 할 수 있습니다.

그런 다음 웹 서버에서 directory existsis writable을 확인해야합니다. 사용자가 수동 설치 단계로 수행하도록 요청하거나 응용 프로그램의 일부로 "설치 프로그램"스크립트를 포함 시켜서 디렉토리를 적절히 설정하고 설정할 수 있습니다.

마지막으로 파일을 실제로 업로드 할 때 업로드 디렉토리에 대한 경로를 만들어야합니다. 이 작업을 수행하는 방법은 여러 가지가 있습니다 (관리자가 자신의 위치를 ​​선택할 수있는 경우 선택 한 위치에 따라 다름)하지만 다시 일반적으로 이는 일부 구성 파일에 기록 된 변수 값을 읽음으로써 수행됩니다. 예

// config.php 
$DIR_UPLOAD = '/var/www/upload/'; 

이 값은 설치 프로그램 스크립트 또는 설치시 관리자가 직접 입력 할 수 있습니다.

+0

URL에서 파일을 숨기려면 몇 가지 좋은 인수가 있습니까? 어쨌든 나는 그 (것)들을 url를 필요로하기 때문에? –

+0

@neosatan : 일반적으로이 url은'$ _GET' 매개 변수를 허용하고 ['readfile'] (http://www.php.net/manual/)을 사용하여 대상 파일의 내용을 전달하는 PHP 스크립트입니다. ko/function.readfile.php). 이렇게하면 스크립트는 파일에 대한 액세스 권한을 부여하기 전에 액세스 제어를 수행 할 수 있습니다. 반면에 파일에 직접 액세스 할 수있는 경우 URL을 가진 모든 사용자가 액세스 할 수 있으며 제어 할 권한이 없습니다. – Jon

+0

좋은 아이디어. 일반적으로 필자는 일부 액세스 제어를 구현했지만 디자인에서 액세스 할 수있는 이미지와 같이 직접 URL을 가질 필요가없는 파일에 대해서만 구현했습니다. 모든 업로드 된 파일에이 작업을 수행하는 아이디어는 여전히 새로운 것이지만 어떻게 수행되는지 궁금합니다. 액세스 할 수 있어야하는 파일에 대해 CPU주기가 낭비되지 않습니까? 또는 나는 틀린가? –

관련 문제