2024 日本 PHP 研討會
新增註記

使用者貢獻的註記 8 則註記

anagai at yahoo dot com
12 年前
這將刪除目錄中所有符合特定模式的檔案,只需一行程式碼。

<?php array_map('unlink', glob("some/dir/*.txt")); ?>
dexen dot devries at gmail dot com
13 年前
刪除了大型檔案,但沒有看到可用空間增加或磁碟使用量減少?使用 UNIX 或其他 POSIX 作業系統?

unlink() 並非用於移除檔案,而是用於移除檔案名稱。man 頁面說明:「unlink - 刪除名稱以及可能刪除它所參考的檔案」。

大多數情況下,一個檔案只有一個名稱 — 移除它也會移除(釋放、取消配置)檔案的「主體」(有一個需要注意的地方,見下文)。這是簡單、常見的情況。

然而,一個檔案有多個名稱(參見 link() 函式)是完全沒問題的,無論是在同一個目錄還是在不同的目錄中。所有名稱都將參考檔案主體並「保持其活動狀態」。只有當所有名稱都被移除時,檔案主體才會真正被釋放。

注意事項
檔案的主體也可能被持有檔案開啟狀態的程序「保持活動狀態」(仍在使用磁碟空間)。只要程序保持檔案開啟,主體就不會被釋放(不會釋放磁碟空間)。事實上,有一種奇特的方法可以恢復被誤刪但仍被程序開啟的檔案…
deen804 at gmail dot com
10 年前
unlink($fileName); 對我來說失敗了。
然後我嘗試使用 realpath($fileName) 函式,如下所示:
unlink(realpath($fileName)); 成功了

只是發布出來,以防有人覺得有用。
federico at poisonfx dot com
13 年前
這是使用遮罩刪除檔案最簡單的方法

<?php
$mask
= "*.jpg"
array_map( "unlink", glob( $mask ) );
?>
PD
16 年前
我一直在做一些小嘗試,在修改主文字檔之前建立一個備份檔。然後,當發生錯誤時,主檔案將被刪除(取消連結),並返回備份檔。

不過,我花了大約一個小時的時間在思考為什麼我無法獲得正確的權限來取消連結主檔案。

最後我知道問題出在哪裡:因為我正在處理該檔案並且尚未關閉該檔案,所以它仍在使用中,當然無法刪除 :)

所以我想在這裡提一下,以避免其他人犯同樣的錯誤

<?php
// 先關閉檔案
fclose($fp);

// 然後取消連結 :)
unlink($somefile);
?>
chris at vibenewmedia dot com
20 年前
要刪除特定副檔名的所有檔案,或者實際上,使用萬用字元刪除所有檔案,一種更簡單的方法是使用 glob 函式。假設我想刪除所有 jpg 檔案 .........

<?php

foreach (glob("*.jpg") as $filename) {
echo
"$filename 大小 " . filesize($filename) . "\n";
unlink($filename);
}

?>
gotdalife at gmail dot com
16 年前
對於遇到權限被拒絕錯誤的人來說,有時這是由於您嘗試刪除階層結構中比工作目錄更高的資料夾中的檔案所引起的(例如,嘗試刪除以 "../" 開頭的路徑時)。

因此,要解決此問題,您可以使用 chdir() 將工作目錄更改為要取消連結的檔案所在的資料夾。

<?php
$old
= getcwd(); // 儲存目前的目錄
chdir($path_to_file);
unlink($filename);
chdir($old); // 還原舊的工作目錄
?>
Eric
10 年前
這看起來可能很明顯,但我一直為這個問題煩惱不已——請確保您嘗試刪除的檔案目前沒有被使用。我有一個腳本用於解析文字檔,並且應該在完成後將其刪除,但不斷收到權限被拒絕的錯誤,因為我沒有明確關閉該檔案,因此即使解析已完成,它在技術上仍在被「使用」。
To Top