PHP에는 파일을 여는 데 도움이 될 뿐만 아니라 디렉터리 내용 표시, 파일 이동 등에 도움이 되는 많은 파일 시스템 관련 기능이 있습니다. 많은 사람들이 PHP를 사용하여 웹 기반 파일 관리자를 작성하기도 했습니다.
우선, 파일 경로에 대해 알려드릴 필요가 있습니다. Windows에서는 파일 경로에 슬래시 "/" 또는 백슬래시 "\"를 사용할 수 있지만 다른 운영 체제에서는 "/"만 사용할 수 있습니다. 호환성상의 이유로 다음 예에서는 "/" 표현을 사용합니다.
다음 간단한 스크립트는 기본 디렉터리 목록을 표시합니다. 주석은 코드에 있으며 각 단계를 설명합니다.
<? /* 변수 $dir_name*/에 액세스하려는 디렉터리의 전체 경로를 제공합니다.
$dir_name = /home/me/
/* 핸들을 만들고 결과를 엽니다. 지정된 디렉토리* /
$dir = opendir($dir_name);
/* 목록 요소(파일 이름)가 배치될 위치에 텍스트 추가를 시작합니다. */
$
file_list = <ul>;
열린 디렉토리의 모든 요소를 읽는 while 문입니다. 파일 이름이 "."도 ".."도 아닌 경우 목록에 파일 이름을 출력합니다. */
while ($file_name = readdir($dir)) {
if (($file_name != .) && ($file_name != ..)) {
$파일_목록 .= <li>$파일_이름;
}
}
/* 목록 마무리*/
$file_list .= </ul>
/* 열린 디렉토리 핸들을 닫고 PHP 코드 세그먼트를 종료합니다*/
closeir($dir)
?>
<!-- HTML을 시작합니다 -->
<HTML >
<헤드>
<TITLE>디렉토리 목록</TITLE>
</HEAD>
<BODY>
<!-- PHP를 사용하여 읽은 디렉토리의 이름을 인쇄하세요 -->
<P>파일: <? echo $dir_name ?></p>
<!-- PHP를 사용하여 디렉토리 목록을 인쇄하세요 -->
<? 에코 $file_list ?>
</BODY>
</HTML>
현재 디렉토리 목록이 이미 있습니다. 디렉토리나 파일의 내용을 읽으려면(곧 보게 될 것임) 사용자가 위치한 PHP 실행 플랫폼에 최소한 디렉토리나 파일에 대한 읽기 권한이 있어야 한다는 점을 기억해야 합니다.
다음 예에서는 파일을 복사하는 방법을 보여줍니다.
<? /* $original 변수에 복사할 파일의 경로를 입력하고 $copied 변수에 복사할 대상 경로를 입력합니다. */
$original = /home/me/ mydatabasedump;
$copied = /archive/mydatabasedumo_1010;
/* 소스 파일을 대상에 복사하려면 copy() 함수를 사용하거나 오류 메시지를 출력하면서 끝납니다*/
@copy($original, $copied) 또는 die(복사할 수 없습니다. 파일.);
?>
샘플 스크립트는 시스템 백업의 첫 번째 단계입니다. 스크립트가 실행되면 먼저 보안상의 이유로 데이터베이스를 다른 위치에 복사합니다. crontab을 수정하면 사용자 개입 없이 선택한 시간에 이 파일을 실행할 수 있습니다.
Lynx가 이미 시스템에 있다고 가정하면 Lynx를 실행하고 파일에 액세스하기 위한 crontab 항목을 만들 수 있습니다. 파일에 액세스하면 스크립트가 실행되고 파일 복사본이 생성됩니다. 다음 예에서는 아침 5시에 스크립트를 실행한 다음 Lynx를 종료합니다:
0 5 * * * [username] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1
PHP CGI 버전을 실행 중인 경우 Lynx 부분을 건너뛰고 바이너리를 참조할 수 있습니다:
0 5 * * * [username] php /path/to/copyfile.php 1>/dev/null 2>&1