Bài viết này tập trung vào việc điều khiển hệ thống tệp tin và thư mục trên máy chủ (không phải máy khách). Bài này được chia làm các phần sau:
Phần 1: Các hàm căn bản xử lý tệp và thư mục
Phần 2: Cách thức truy xuất dữ liệu từ tệp tin.
Phần 3: Tải file lên máy chủ.

Phần I. Các hàm cơ bản để xử lý tệp và thư mục

I. Một số hàm xử lý thư mục
1. Thay đổi thư mục gốc
Để thay đổi thư mục gốc, ta dùng hàm chroot
Cú pháp:
bool chroot ( string directory)
Hàm này trả về true nếu như thư mục gốc được chuyển đổi thành thư mục có đường dẫn là directory.

2. Thay đổi thư mục hiện hành
Cú pháp:
bool chdir ( string directory)
Thay đổi thư mục hiện hành sang thư mục có đường dẫn là directory. Hàm trả về TRUE nếu thành công, ngược lại là FALSE.

3. Trả về thư mục hiện hành
Để lấy đường dẫn của thư mục hiện hành, ta dùng hàm getcwd:
string getcwd ()

4. Hiển thị danh sách các tệp và thư mục con của một thư mục nào đó:
Để làm điều này, ta dùng hàm scandir
VD:
<?php
$dir = '/source';
$files1 = scandir($dir);
print_r($files1);
?>
hơ hơ, đây chính là cách mà mấy con remview hoặc backdoor của mấy chú hacker hay sử dụng để duyệt qua các tệp và thư mục trên máy chủ đây mà

5. Tạo một thư mục mới
Để tạo một thư mục mới trên máy chủ, ta dùng hàm mkdir():
bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]])
VD:
<?php
mkdir("/uploads/images"); // tạo một thư mục images trong thư mục uploads ở thư mục gốc của website.
?>

6. Xoá một thư mục
Để xoá một thư mục mới trên máy chủ, ta dùng hàm rmdir():
bool rmdir (string pathname)

VD:
<?php
rmdir("/uploads/images"); // Xoá thư mục images trong thư mục uploads ở thư mục gốc của website.
?>

II. Một số hàm xử lý tệp tin

1. Đổi tên tệp tin:
Để đổi tên tệp tin, ta dùng hàm rename:
bool rename ( string oldname, string newname)
Hàm này sẽ cố gắng đổi tên từ oldname sang tên mới (newname). Hàm sẽ trả về TRUE nếu thành công, ngược lại là FALSE

2. Xóa tệp tin
Để xóa tên tệp tin, ta dùng hàm unlink() hoặc delete():
int unlink ( string filename)
Hàm này sẽ xóa file có đường dẫn (tên) là filename. Trả về TRUE nếu thành công, ngược lại là FALSE

3. Copy file
Để copy file, ta dùng hàm copy có cấu trúc như sau:
int copy ( string source, string dest)
Hàm này sẽ tạo ra một bản copy file nguồn (sourse) sang file đích (dest). Hàm trả về TRUE nếu thành công, ngược lại là FALSE

Ví dụ:
<?
// Tạo ra một file backup của file có tên là $file. File backup sẽ được bổ sung phần đuôi mới là .bak:
if (!copy($file, $file.'.bak')) {
print ("Lỗi copy $file...
");
}
?>

Hàm kiểm tra sự tồn tại của một file:
Khi xử lý các file, ta thường kiểm tra xem file có tồn tại hay không trước khi tiến hành các thao tác đọc, ghi dữ liệu:
Cú pháp:
bool file_exists ( string filename)
Hàm này sẽ trả về TRUE nếu thành công, ngược lại là FALSE.