basename() 函數
string basename(string path);
傳入一個包含路徑的檔案名稱,去掉路徑,傳回檔名的部份。UNIX 系統下的路徑使用 "/",在 Windows 環境下,使用 "/" 或 "\" 皆可。
範例:
$path = "/home/httpd/html/index.php"; $filename = basename($path);
相關函數:dirname()
chgrp() 函數
int chgrp(string filename, mixed group);
改變檔案的 group 屬性。改變檔案的 group 時,須注意使用者的權限問題。
成功傳回 true,否則傳回 false。在 Windows 環境下使用這個函數時,不會改變任何東西,並且傳回 true。
相關函數:chown(), chmod()
chmod() 函數
int chmod(string filename, int mode);
改變一個檔案的型態。filename 為傳入的檔案名稱與路徑,mode 是要改變的型態,chmod() 函數和 chmod 指令類似。
要注意的是,chmod() 函數並不會自動將 mode 當做八進位數字,所以 mode 最好加上 0 (zero) 才不會發生錯誤。
成功執行傳回 true,否則傳回 false。使用 chmod() 函數要特別注意檔案的權限,否則會無法成功更改檔案的型態,此時 chmod() 傳回 false。
範例:
chmod( "~/test.txt", 644 ); // 錯誤的寫法 (十進位) chmod( "~/test.txt", 0755 ); // 正確的寫法 (八進位)
相關函數:chown(), chgrp()
chown() 函數
int chown(string filename, mixed user);
改變檔案擁有人 (owner)。使用這個函數要注意,只有 superuser 才能改變檔案的擁有人。在 Windows 環境下,執行 chown() 函數不會變更任何東西,並且傳回 true。
成功傳回 true,否則傳回 false。
相關函數:chown(), chmod()
clearstatcache() 函數
void clearstatcache(void);
清除 stat cache。
PHP 會將利用 stat() 與 lstat() 取得的最後一筆資訊存放在記憶體裡,以提供下次讀取的速度。利用 clearstatcache() 函數可清除這些快取資料,如此一來可強迫 PHP 重新取得相關資訊。
相關函數:stat(), lstat(), file_exists(), is_writeable(), is_readable(), is_executable(), is_file(), is_dir(), is_link(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype(), fileperms()
copy() 函數
int copy(string source, string dest);
拷貝檔案。將 source 指定的檔案拷貝到 dest。成功傳回 true,否則傳回 false。
範例:
if (!copy("guestbook.html", "guestbook.html.bak")) { print("Backup guestbook.html failed...<br>\n"); }
相關函數:rename()
dirname() 函數
string dirname(string path);
return directory name component of path
傳回檔案的路徑部份。傳入包含完整路徑的檔案名稱,dirname() 傳回目錄的路徑部份。
在 Windows 底下,目錄可以使用 (/) 或 (\) 斜線,在其他系統底下則只能用 (/)。
範例:
$path = "/etc/passwd"; $file = dirname($path); echo $file; //輸出 "/etc"
相關函數:basename()
disk_free_space() 函數
float disk_free_space(string directory);
取得 directory 目錄下的可用空間。
傳入一個目錄給 disk_free_space(),傳回該目錄下的可用空間,單位為 bytes。因為不同的 partition 可 mount 在不同的目錄下,假如我們要查詢該 partition 的可用空間時,只要傳入該目錄即可 (非設備檔名稱)。
範例:
<p>Free space: <?=disk_free_space("/home2")?> bytes</p>
輸出結果範例:
Free space: 625876992 bytes
PHP 4.1.0 以上版本才支援 disk_free_space() 函數。
diskfreespace() 函數
PHP 4.1.0 後請改用 disk_free_space() 函數。
disk_total_space() 函數
float disk_total_space(string directory);
取得 directory 目錄下的總空間。
傳入一個目錄給 disk_total_space(),傳回該目錄下的總空間,單位為 bytes。因為不同的 partition 可 mount 在不同的目錄下,假如我們要查詢該 partition 的可用空間時,只要傳入該目錄即可 (非設備檔名稱)。
範例:
<p>Total space: <?=disk_total_space("/home2")?> bytes</p>
輸出結果範例:
Total space: 2409914368 bytes
PHP 4.1.0 以上版本才支援 disk_total_space() 函數。
fclose() 函數
int fclose(int fp);
關閉檔案。成功的話傳回 true,失敗的話傳回 false。
fp 為檔案指標,必須是之前利用 fopen() 或 fsockopen() 開啟的檔案。
feof() 函數
int feof(int fp);
如果檔案指標已經指到 EOF (end of file),則傳回 true;如果有錯誤發生也會傳回 true。
fgetc() 函數
string fgetc(int fp);
由檔案讀取一個字元。傳回的是字串型態,不過包含讀取的一個字元。如果遇到檔案結尾,則傳回 false。
相關函數:fread(), fopen(), popen(), fsockopen(), fgets()
fgets() 函數
string fgets(int fp, int length);
由檔案讀取一行資料。length 是最長長度,fgets() 最長只讀取到 length-1 bytes 的長度,或是每列的結束。每行以換行符號或是 EOF 做為結尾。
成功的話傳回讀到的字串,否則傳回 false。
相關函數:fread(), fopen(), popen(), fgetc(), fsockopen()
fgetss() 函數
string fgetss(int fp, int length);
由檔案讀取一行的資料,並且去除 HTML 語法標籤與 PHP 標籤。
相關函數:fgets(), fopen(), fsockopen(), and popen().
file() 函數
array file(string filename);
將檔案的內容全部讀進陣列裡。陣列裡的每個元素即檔案的每一行,換行符號也會被保留。
相關函數:readfile(), fopen(), and popen().
file_exists() 函數
int file_exists(string filename);
判斷檔案是否存在,如果存在則傳回 true,否則傳回 false。
相關函數:clearstatcache().
fileatime() 函數
int fileatime(string filename);
讀取檔案最後被存取 (access) 的時間。如果有錯誤發生則傳回 false。
filectime() 函數
int filectime(string filename);
取得檔案的 inode 修改時間。
filegroup() 函數
int filegroup(string filename);
取得檔案所屬的 group,傳回的是 group ID。失敗的話則傳回 false。
fileinode() 函數
int fileinode(string filename);
取得檔案的 inode,傳回 inode number。失敗的話則傳回 false。
filemtime() 函數
int filemtime(string filename);
取得檔案最後被修改的時間,失敗的話則傳回 false。
fileowner() 函數
int fileowner(string filename);
取得檔案的 owner ID。失敗的話則傳回 false。
fileperms() 函數
int fileperms(string filename);
取得檔案的讀寫 (permission) 狀態。失敗的話則傳回 false。
filesize() 函數
int filesize(string filename);
取得檔案的大小,失敗則傳回 false。
filetype() 函數
string filetype(string filename);
傳回檔案的屬性,包括:fifo, char, dir, block, link, file, 與 unknown。執行失敗傳回 false。
flock() 函數
bool flock(int fp, int operation);
鎖住檔案,可用來確保多人同時存取時資料的正確性。fp 必須是一個已開啟的檔案指標,operation 是一個正整數值,包括:
□ 1 - shared lock
□ 2 - exclusive lock
□ 3 - releasing a lock
□ 4 - non-blocking shared lock
□ 5 - non-blocking exclusive lock
1 與 2 來用鎖住檔案,3 則是解除鎖定。如果是檔案讀取方,則以 shared lock 方式鎖定;如果是檔案寫入方,則以 exclusive lock 方式鎖定。
4、5 和 1、2 一樣,只不過是以 non-blocking 的方式鎖定。
fflush() 函數
int fflush(int fp);
fflush() 用來強制將緩衝區 (buffer) 裡的資料寫到 fp 所指的檔案裡,確保該寫入的資料都被寫入了。執行成功的話傳回 TRUE,否則傳回 FALSE。
相關函數:fopen(), popen(), fsockopen()
fopen() 函數
int fopen(string filename, string mode);
開啟本地端檔案或是 URL。如果要開啟 URL,必須指定完整的 URL 路徑與名稱,例如:
$fp_url = fopen("http://o3.net/robots.txt", "r");
fopen() 也支援 ftp 通訊協定,要開啟 ftp 檔案時也是要指定完整的路徑與名稱:
$fp_ftp = fopen("ftp://o3.net/pub/OS/Linux/kernel-2.2.12.tar.bz2", "w");
以 ftp 方式不能開啟 "rw" 模式的檔案。不管是開啟 URL 或 ftp,都必須確定是否有權限。
開啟本地端檔案則直接指定路徑與名稱即可:
$fp = fopen("/jollen/test.txt", "r"); $fp = fopen("~/test.txt", "r");
mode 則是檔案的開啟模式,與 C 語言一樣:
1. 'r' - 開啟唯讀檔
2. 'r+' - 開啟 read/write 檔案
3. 'w' - 開啟唯寫檔。如果檔案不存在,則建立一個新檔案;如果檔案已存在,則會被覆蓋。
4. 'w+' - 開啟 read/write 檔案。如果檔案不存在,則建立一個新檔案;如果檔案已存在,則會被覆蓋。
5. 'a' - 開啟指向檔案結尾的唯讀檔,如果檔案不存在,則建立一個新檔案。
6. 'a+' - 開啟指向檔案結尾的 read/write 檔案,可用來附加資料在檔案後。如果檔案不存在,則建立一個新檔案。
上面所有的模式都可加上 'b',表示要讀寫一個 binary (二進位) 檔案。不加上 'b' 表示讀寫一個文字檔。
在 Windows 底下必須改用正斜線,同時記得要加上 escape character:
$fp = fopen("c:\\data\\info.txt", "r");
相關函數:fclose(), fsockopen(), and popen().
fpassthru() 函數
int fpassthru(int fp);
將 fp 指標所指之後所有的資料輸出到標準輸出 (standard output)。失敗的話傳回 false。
fp 是已開啟的檔案指標,當 fpassthru() 輸出完所有的資料後會自動將檔案關閉。
相關函數:readfile(), fopen(), popen(), fsockopen()
fputs() 函數
int fputs(int fp, string str, int [length]);
寫入字串到檔案。length 指定要寫入的長度,如果忽略的話表示要寫入整個字串。
fread() 函數
string fread(int fp, int length);
fread() 可用來讀取二進位或文字檔案,length 指定要讀取的長度。
範例:
<?php
$filename = "./example.php";
$fd = fopen( $filename, "r");
$contents = fread( $fd, filesize($filename));
fclose($fd);
?>
相關函數:fwrite(), fopen(), fsockopen(), popen(), fgets(), fgetss(), file(), fpassthru()
fscanf() 函數
mixed fscanf ( int handle, string format [, string var1]);
fscanf() 函數用來以格式化的方式讀取檔案內容。
範例:
<?php $fp = fopen ("users.txt","r"); while ($userinfo = fscanf ($fp, "%s\t%s\t%s\n")) { list ($name, $phone, $countrycode) = $userinfo; // … 其它 PHP 程式碼 } fclose($fp); ?>
users.txt 檔案內容如下:
peter 09283762 tw john 08293852 jp paul 08273382 hk
fseek() 函數
int fseek(int fp, int offset);
移動讀寫指標。將 fp 指標由檔案開頭移動 offset bytes。
成功的話傳回 true,否則傳回 false。如果 offset 的值超過檔案結尾,不視為錯誤。fseek() 也不能用來移動開啟的 URL 檔案 (http:// 或 ftp:// 型式的檔案)。
相關函數:ftell(), rewind()
ftell() 函數
int ftell(int fp);
傳回目前 fp 指標在檔案裡的位置。失敗的話傳回 false。
相關函數:fopen(), popen(), fseek(),rewind()
fwrite() 函數
int fwrite(int fp, string string, int [length]);
fread() 可用來讀取二進位或文字檔案,length 指定要寫入的長度,沒有指定表示要寫入整個字串。
相關函數:fread(), fopen(), fsockopen(), popen(), fputs()
ftruncate() 函數
int ftruncate(int fp, int size);
ftruncate() 函數用來改變檔案的大小。成功的話傳回 TRUE,失敗的話則傳回 FALSE。
範例:
$fp = fopen("users.txt", "w"); ftruncate($fp, 0);
is_dir() 函數
bool is_dir(string filename);
如果 filename 是一個目錄,則傳回 true。
相關函數:is_file(), is_link().
is_executable() 函數
bool is_executable(string filename);
如果 filename 為可執行的檔案,則傳回 true。
相關函數:is_file(), is_link()
is_file() 函數
bool is_file(string filename);
如果 filename 是一個檔案,則傳回 true。
相關函數:is_dir() and is_link().
is_link() 函數
bool is_link(string filename);
如果 filename 是一個 symblic link,則傳回 true。
相關函數:is_dir() and is_file()
is_readable() 函數
bool is_readable(string filename);
如果有讀取 filename 的權限,則傳回 true。
相關函數:is_writeable()
is_writeable() 函數
bool is_readable(string filename);
如果有寫入 filename 的權限,則傳回 true。
相關函數:is_readable()
link() 函數
int link(string target, string link);
建立一個 hard link。
相關函數:symlink(), readlink(), linkinfo()
linkinfo() 函數
int linkinfo(string path);
取得 link 的資訊。其實這個函數只是用來檢查 link 是否存在,如果不存在或執行過程有錯誤,則傳回 false。
相關函數:symlink(), link(), readlink()
mkdir() 函數
int mkdir(string pathname, int mode);
建立一個目錄。mod 是目錄的屬性,與 chmod 指令的格式相同。例如:
mkdir("/path/to/my/dir", 0700);
mode 以八進位來設定最方便而且最簡單。在 PHP 裡以 0 開頭的數皆視為八進位。
相關函數:rmdir()
move_uploaded_file() 函數
bool move_uploaded_file(string filename, string destination);
move_uploaded_file() 函數將上傳的檔案 filename 搬移至 destination。注意這裡的 filename 指的是由 HTTP POST 所上傳的檔案其變數本身,而不是檔案名稱。
例如,經由 HTTP POST 所上傳的 $userfile,雖然檔名應該是 $userfile_name,但是呼叫 move_uploaded_file() 函數時,應該要寫成 $userfile 才對。
PHP 4.0.3 以上的版本才支援 move_uploaded_file() 函數。
pclose() 函數
int pclose(int fp);
關閉一個已開啟的 pipe。
相關函數:popen()
popen() 函數
int popen(string command, string mode);
開啟 pipe。利用 popen() 開啟的 pipe 必須使用 pclose() 關閉。開啟失敗的話則傳回 false。
相關函數:pclose().
pathinfo() 函數
array pathinfo(string path);
pathinfo() 以 associative array 方式傳回 path 的相關資訊,包含:dirname、basename 與 extension。
範例:
<?php
$path = pathinfo("/var/www/htdocs/index.html");
echo $path["dirname"] . "\n"; echo $path["basename"] . "\n"; echo $path["extension"] . "\n";
?>
輸出結果為:
/var/www/htdocs index.html html
相關函數:realpath()
readfile() 函數
int readfile(string filename);
將檔案的所有內容輸出到標準輸出,當我們要輸出整個檔案時,readfile() 函數特別好用。傳回實際讀取並輸出的 byte 數,失敗的話則傳回 false。
同樣地,filename 也可以是 URL 或 ftp 的檔案。
相關函數:fpassthru(), file(), fopen(), include(), require(), virtual()
readlink() 函數
string readlink(string path);
讀取 symbolic link 所指的完整路徑名稱。如果失敗的話則傳回 false。
相關函數:symlink(), readlink() and linkinfo().
rename() 函數
int rename(string oldname, string newname);
更改檔案名稱。如果失敗的話則傳回 false。
rewind() 函數
int rewind(int fp);
將檔案指標移到檔案開頭。如果失敗的話則傳回 false。
相關函數:fseek(), ftell()
rmdir() 函數
int rmdir(string dirname);
刪除目錄。要刪除的目錄必須是一個空目錄,而且必須有刪除該目錄的權限。如果失敗則傳回 false。
相關函數:mkdir()
realpath() 函數
string realpath(string path);
realpath() 函數用來傳回 path 的絕對路徑。
範例:
<?php
$real_path = realpath ("../../conf/httpd.conf"); echo $real_path;
?>
輸出結果為:
/usr/local/conf/httpd.conf
stat() 函數
array stat(string filename);
取得檔案的相關資訊。傳回的 array 包含底下這些元素:
1. device
2. inode
3. number of links
4. user id of owner
5. group id owner
6. device type if inode device *
7. size in bytes
8. time of last access
9. time of last modification
10. time of last change
11. blocksize for filesystem I/O *
12. number of blocks allocated
標星號 (*) 表示該元素只有在支援 st_blksize 的作業系統上才能取得,否則該元素的值為 -1 (例如在 Win32 環境下就無法取得)。
lstat() 函數
array lstat(string filename);
取得檔案或 symbolic link 的資訊。要注意,如果是 symbolic link,則傳回的是該 link 的資訊,而不是 link 所指的檔案。
lstat 傳回一個包含下列元素的陣列:
1. device
2. inode
3. number of links
4. user id of owner
5. group id owner
6. device type if inode device *
7. size in bytes
8. time of last access
9. time of last modification
10. time of last change
11. blocksize for filesystem I/O *
12. number of blocks allocated
標星號 (*) 表示該元素只有在支援 st_blksize 的作業系統上才能取得,否則該元素的值為 -1 (例如在 Win32 環境下就無法取得)。
symlink() 函數
int symlink(string target, string link);
建立一個 symbolic link。
相關函數:link(), linkinfo()
tempnam() 函數
string tempnam(string dir, string prefix);
在指定的目錄下建立一個檔名唯一的暫時性檔案,prefix 指定檔名的開頭。例如:
$tmpfname = tempnam( "/tmp", "S09" );
如果指定的目錄不存在,則在 "/tmp" 目錄下建立檔案。
touch() 函數
int touch(string filename, int time);
touch 一個檔案,與 UNIX 下的 touch 命令功能相同。也就是將檔案的日期修改成指定的時間,如果沒有指定 time 參數的話則以目前的時間為主。
如果要 touch 的檔案不存在,則建立一個檔案大小為 0 的檔案。如果 touch 失敗則傳回 false。
umask() 函數
int umask(int mask);
改變 PHP 目前的 umask,與 shell 裡的 umask 功能一樣。如果沒有傳入 mask 參數的話,則傳回目前的 umask 值。
unlink() 函數
int unlink(string filename);
刪除檔案。失敗的話傳回 false。
相關函數:rmdir()
chdir() 函數
int chdir(string directory);
切換目錄,功能與 UNIX 下的 cd 指令一樣。失敗的話傳回 false。
dir() 函數
new dir(string directory);
建立一個讀取目路相關資訊的物件。傳回的物件包含兩個 properties 與 3 個 method:
Properties -
1. handle directory file,如同使用 opendir() 傳回的 directory handle
2. path 該目錄的路徑
Method -
1. read 讀取每個檔案,並移到 directory handle 指向下一個檔案
2. rewind 功能和底下介紹的 rewind() 相同
3. close 關閉 directory handle
使用範例:
<?php
$d = dir("C:/WINNT/Fonts"); echo "Handle: ".$d->handle."<br>\n"; echo "Path: ".$d->path."<br>\n"; while($entry=$d->read()) { echo $entry."<br>\n"; } $d->close();
?>
closedir() 函數
void closedir(int dir_handle);
關閉由 opendir() 開啟的 directory handle。
opendir() 函數
int opendir(string path);
開啟一個 directory handle。傳入一個目錄的路徑,directory handle 指的是指向該目錄底下所有檔案的指標。
readdir() 函數
string readdir(int dir_handle);
由 directory handle 裡讀取檔案名稱,並且將 directory handle 指向下一個檔案。
使用範例:
<?php
$handle=opendir('.'); echo "Files:\n"; while ($file = readdir($handle)) { echo "$file\n"; } closedir($handle);
?>
rewinddir() 函數
void rewinddir(int dir_handle);
重新初始化 directorty handle,將 directory handle 指向開頭。
--jollen