我們通過對關於文件路徑的解釋:在Windows中,可以在路徑中使用/和符號,而在其他的操作系統中只能使用/符號。出於一致性的緣故,我們統一使用/符號。
下面的PHP文件系統相關函數腳本樣例可以顯示一個目錄清單,注釋已經包含在代碼中:
- <? /*把要讀取的目錄的全路徑名存入一個名字為$dir_name的變量中。 */
- $dir_name = "/home/me/";
- /* 創建一個句柄,其值是打開一個給定目錄的結果*/
- $dir = opendir($dir_name);
- /* 建立一個文字塊,用以放置列表元素(文件名字)*/
- $file_list = "<ul>";
- /* 使用一個while語句,讀取已經打開的目錄中的所有元素,如果文件的名字不是“.”或“..”,則顯示列表中的名字*/
- while ($file_name = readdir($dir)) {
- if (($file_name != ".") && ($file_name != "..")) {
- $file_list .= "<li>$file_name";
- }
- }
- $file_list .= "</ul>";
- /*關閉打開的目錄,結束PHP模塊*/
- closedir($dir);
- ?>
- <!-- Start your HTML -->
- <HTML>
- <HEAD>
- <TITLE>Directory Listing</TITLE>
- </HEAD>
- <BODY>
- <!-- Use PHP to print the name of the directory you read -->
- <P>Files in: <? echo "$dir_name"; ?></p>
- <!-- Use PHP to print the directory listing -->
- <? echo "$file_list"; ?>
- </BODY>
- </HTML>
好了,我們已經得到了一個目錄清單。需要注意的是,要讀取一個文件(稍後我們將進行講解)或目錄的內容,PHP運行的系統上的用戶必須至少有讀取文件的權限。
下面是一個如何拷貝文件的PHP文件系統相關函數例子:
- <? /*把你要拷貝的原文件的全路徑賦給一個名字為$original的變量中,把拷貝的文件的全路徑賦予一個名字為$copied的變量中*/
- $original = "/home/me/mydatabasedump";
- $copied = "/archive/mydatabasedumo_1010";
- /* 使用copy()函數拷貝原始文件,如果拷貝沒有完成則會顯示一個錯誤信息*/
- @copy($original, $copied) or die("Couldn't copy file.");
- ?>
這個PHP文件系統相關函數的例子是一個文件備份系統的原型。在這段腳本運行時,它把文件拷貝到一個不同的位置進行保存。稍微修改一下守護程序,就可以在一天中你指定的時刻執行它,而無需用戶的干預。
假定你在系統上安裝了Lynx,可以創建一個守護程序的條目訪問這個文件,訪問這個文件會運行這個腳本並建立一個拷貝文件,下面的例子將在上午5點鐘運行這個腳本,然後關閉Lynx:
0 5 * * * [username] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1
如果運行的是CGI版本的PHP,可以跳過Lynx部分,而直接調用二進制文件:
0 5 * * * [username] php /path/to/copyfile.php 1>/dev/null 2>&1