이것은 이식성 문제이며 서버 구성 (즉, 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을 사용하십시오.
어떤 FTP/파일 프로그램을 사용하고 있습니까? – jared
폴더 생성 후 chmod()를 사용할 수 있습니다. – ActuallyMAB