티스토리 뷰

오늘도 개발자/PHP

[PHP] 디렉토리 제어(Directories)

오늘도공대생 2022. 1. 29. 21:00

일반적으로 __DIR__이나 __FILE__ 등을 활용해 현재 위치를 구해 경로를 제어하지만

실제 터미널과 같이 파일 시스템에서의 디렉토리 제어가 필요한 경우들이 있습니다.

 

opendir 등은 resource인 open directory handle를 반환합니다.

chdir(string $directory): bool

PHP의 현재 디렉토리를 변경합니다.

echo getcwd() . "\n";
chdir('public_html');
echo getcwd() . "\n";
/* result to:
/home/paric
/home/paric/public_html
*/

chroot(string $directory): bool

루트 디렉토리를 변경하고자 할 때 사용되는 함수입니다. 현재 작업 디렉토리를 "/"로 변경합니다.

이 기능은 GNU 및 BSD 시스템에서만 사용할 수 있으며 CLI, CGI 또는 Embed SAPI를 사용할 때만 사용할 수 있습니다.  루트 권한이 필요합니다.

이 함수를 호출해도 __DIR__  __FILE__매직 상수의 값은 변경되지 않습니다.

  • Windows에서 구현되지 않습니다.
  •  ZTS(Zend Thread Safety)가 활성화된 PHP 인터프리터에서는 사용할 수 없습니다.
chroot("/path/to/your/chroot/");
echo getcwd();
/* result to :
/
*/
 

getcwd(): string|false

현재 작업 디렉토리를 가져옵니다.

PHP 인터프리터가 ZTS(Zend Thread Safety)가 활성화된 상태로 빌드된 경우 getcwd()가 반환하는 현재 작업 디렉터리는 운영 체제 인터페이스에서 반환된 디렉터리와 다를 수 있습니다.

 

scandir(string $directory, int $sorting_order = SCANDIR_SORT_ASCENDING, ?resource $context = null): array|false

지정된 경로 내에 있는 파일 및 디렉토리를 배열로 반환합니다.

 

opendir(string $directory, ?resource $context = null): resource|false

closedir() , readdir() 및 rewinddir() 호출에서 사용할 디렉토리 핸들을 엽니다.

 

closedir(?resource $dir_handle = null): void

 dir_handle로 표시된 디렉토리 스트림을 닫습니다. 스트림은 이전에 opendir() 에 의해 열려 있어야 합니다 .

$dir = "/etc/php5/";

// 디렉토리를 열고 디렉토리를 변수로 읽은 다음 닫습니다.
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        $directory = readdir($dh);
        closedir($dh);
    }
}

readdir(?resource $dir_handle = null): string|false

디렉토리에서 다음 항목의 이름을 반환합니다. 항목은 파일 시스템에 저장된 순서대로 반환됩니다.

PHP8부터 $dir_handle은 nullalbe해 졌습니다. $dir_handle 값이 null일 경우opendir()에 의해 열린 마지막 링크로 가정됩니다.

 

rewinddir(?resource $dir_handle = null): void

dir_handle로 표시된 디렉토리 스트림을 디렉토리의 시작 부분으로 재설정합니다.

readdir()을 실행할 때 마다 커서가 옮겨지게되는데 이를 초기화하는 함수라 보면 됩니다.

 

 


Directories

'오늘도 개발자 > PHP' 카테고리의 다른 글

[PHP] 스트림(Streams)  (0) 2022.01.30
[PHP]파일시스템(file system)  (0) 2022.01.29
[PHP] JSON (JavaScript Object Notation)  (0) 2022.01.29
[PHP] cURL  (0) 2022.01.29
[PHP] URLs  (0) 2022.01.29
댓글