2010-01-14 5 views
2

좋아요, 그래서 문제가 있습니다. PHP에서 컴파일 된 템플릿을 저장할 폴더를 만들어야합니다. 해당 디렉토리 (compiled_templates)에 mkdir()을 설치하는 설치 스크립트가 있습니다.PHP 설치 스크립트 내에서 mkdir()에 대한 권한 부족에 대한 해결책

항상이 경고를 반환합니다.

Warning: mkdir() [function.mkdir]: Permission denied in /home/tchalvak/sites/quotesite/quotes/install.php on line 92

compiled_template 폴더가 동일한 권한 문제에도 오류 내에서 생성 될 폴더의 모드를 변경 실행합니다.

PHP를 통해 저장 폴더에 해당하는 항목을 만들 수 있는지 확인할 방법이 없습니까? 폴더가 생성되었는지 확인하기 위해 외부 PHP 프로그램을 사용해야 만합니까? 어떻게 다른 PHP 개발자가이 문제를 해결할 수 있습니까?

편집 : 이것은 설치 가능한 스크립트이므로 전체 대상은 10 명의 다른 임의의 사용자가 서버에 스크립트를 설치할 수 있도록 허용하는 것입니다. 이것은 "php가 compiled_templates 디렉토리에 필요한 모든 쓰기 권한을 가지고 있는지 확인하는 것"이 ​​불행히도 수동 프로세스로 실용적이지 않은 이유입니다.

편집 : 임시 디렉토리를 만드는 중일뿐 아니라 동일한 권한 오류가 발생합니다. 라메.

답변

3

임시 디렉토리 인 경우 시스템 temp 디렉토리에 디렉토리를 만듭니다.

mkdir(sys_get_temp_dir() . 'example'); 

일반적인 접근 방식은 PHP가 (예 : apache)로 실행되는 사용자에게 필요한 경우 쓰기 권한이 있는지 확인하는 것입니다.

1

일반적으로 우리는 적절한 권한을 갖도록 시스템을 설정합니다. 옵션이 아닌 경우 스크립트는 훌륭한 설명 오류 메시지와 가능한 해결책으로 실패해야합니다.

당신은 당신이 아마 tmpfile(), tempnam()sys_get_temp_dir() 함수를 사용하면 유용 할 수있는 임시 폴더를 원하는 언급입니다.

1

tmp에 dir을 넣는 것에 동의합니다. 일반적으로 설치 스크립트에서이 문제를 다루는 좀 더 일반적인 질문에 대답하려면 ... 스크립트를 실행하기 전에 웹 루트에서 perms를 설정하고 패키지 내의 모든 dir에서 perm이 올바른지 확인해야합니다. 그 말로 나는 일반적으로 웹 설치 프로그램을 피하려고 대신 php의 CLI 버전에 대한 설치 프로그램을 작성하십시오. 당연히 상자에 ssh 액세스가 필요하지만 적어도 나를 위해 매우 드물게 나는 그럴 수 없다.

0

시스템 임시 디렉터리를 사용하는 것이 적합하지 않은 경우 FTP 자격 증명을 요청한 크리에이티브 설치 프로그램을 본 다음 FTP를 사용하여 디렉터리를 만들고 사용 권한을 설정하는 것을 보았습니다.

그러나 이것은 자신의 이익을 위해 너무 영리 할 수 ​​있습니다.

관련 문제