2012-07-04 2 views
1

우리 회사에서 리눅스 전용 서버를 사용하고 있습니다. php로 만든 폴더가 아파치에 의해 소유 됨

우리는 PHP 스크립트와 폴더를 만들 때마다

은 아파치 내가 사용자에게 소유자와 권한

을 변경하기 위해 루트를 통해 서버에 연결해야하는 폴더와 각 시간을 소유하고있다하지만 난 몰라 이 문제를 해결하기 위해 어떤 설정을 변경해야하는지 알고 있습니다.

안전 모드를 설정/해제하려고했지만 작동하지 않았습니다. 누군가가 사전에 나에게

감사합니다 도움이 될 수 있다면

나는

+0

어떤 FTP/파일 프로그램을 사용하고 있습니까? – jared

+0

폴더 생성 후 chmod()를 사용할 수 있습니다. – ActuallyMAB

답변

1

이것은 이식성 문제이며 서버 구성 (즉, mod_php 또는 SuExec이있는 FCGI)에 따라 다릅니다.

파일을 만든 직후에 chown 기능을 사용해 볼 수는 있지만 실제 소유자가 누구인지 반드시 알고 있어야하는 경우에만 작동합니다 (항상 그렇지는 않음). 두 번째 $chmod 인수를 생략하면,

function xChmod($path, $chmod = null) // adapted from phunction 
{ 
    if (file_exists($path) === true) 
    { 
     if (is_null($chmod) === true) 
     { 
      $chmod = (is_dir($path) === true) ? 777 : 666; 

      if (extension_loaded('posix') === true) 
      { 
       $user = posix_getpwuid(posix_getuid()); 

       if (array_key_exists('name', $user) === true) 
       { 
        $chmod -= (in_array($user['name'], explode('|', 'apache|httpd|nobody|system|webdaemon|www|www-data')) === true) ? 0 : 22; 
       } 

      } 
     } 

     return chmod($path, octdec(intval($chmod))); 
    } 

    return false; 
} 

기본적으로이 문제, 과도한 권한을 부여하지 않고 항상 (디렉토리뿐만 아니라 실행) 읽기 및 쓰기를 보장 최고의 파일 모드를 찾으려고 I wrote a simple method를 극복하기 위해 , 폴더에는 0777, 파일에는 기본적으로 0666이 사용됩니다. 그러나 PHP가 비표준 사용자로 실행되는 경우, 모드를 22만큼 감소시켜 폴더의 경우 0755, 파일의 경우 0644이됩니다. 이 파일은 이미 존재하는 파일에서만 작동하므로 디렉토리를 생성하는 경우 you'll need to have additional precautions을 사용하십시오.

+0

소유자를 원하는 사용자로 변경하지는 않지만 폴더를 쓰기 가능하게 만듭니다. 덕분에 많은 도움이되었습니다. –

3

당신이 chown PHP commandchmod PHP command를 사용하여 시도 가지고 기쁠 것?

chown() 해당 기능을 실행을 통해 파일 사용 권한을 변경할 수 있습니다

+0

두 기능을 모두 시도했지만 작동하지 않았습니다. –

2

이 작업을 수행하려면 2 방법이 있습니다.

또는 FTP를 사용하여 파일을 이동할 수있는 경우 문서 루트 (public_html/) 외부로 파일을 드래그 한 다음 파일에 대한 권한 변경을 마우스 오른쪽 버튼으로 클릭합니다.

CHMOD는 내가보고 싶은 것입니다. 777은 모든 사람에게 모든 파일에 대한 액세스 권한을 부여하므로 파일 권한이 있는지 테스트 할 수 있습니다. 그래도 777에 대한 사용 권한을 유지하지 않는 것이 좋습니다.

관련 문제