簡體   English   中英

使用PHP刪除網站上的文件?

[英]Delete a file on the website using PHP?

嘿,我正在嘗試使用 unlink() 使我的網站刪除文件; 功能。 但是當我嘗試時,它想到了這個:

Warning: unlink() [function.unlink]: cURL does not allow unlinking in /home/nzcraftn/public_html/filenz/user/delete.php on line 18

Warning: Cannot modify header information - headers already sent by (output started at /home/nzcraftn/public_html/filenz/user/delete.php:18) in /home/nzcraftn/public_html/filenz/user/delete.php on line 27

我正在使用此代碼:

if($_SESSION['user'] == $who) {
    $delete = unlink("http://www.filenz.nzcraft.net/$dl");

    if($delete) {
    $_SESSION['message'] = "<div style='color: #00FF00'>File deleted!</div>";
    header("Location: index.php");
    mysql_query("DELETE FROM fileinfos WHERE(`id`='$id')") or die(mysql_error());

} else {
    $_SESSION['message'] = "<div style='color: #FF0000'>Error while deleting!</div>";
    header("Location: index.php");
    }
}

如果你能告訴我刪除文件的不同方式或幫助我解決我當前的問題,我會非常感激。

謝謝。

雖然您可以通過 HTTP刪除文件,但 php 的HTTP 協議包裝器不支持它。 如果沒有身份驗證,無論如何它都會是一個安全漏洞,因此大多數 HTTP 服務器不支持 DELETE (除了WebDAV )。 您應該執行以下操作之一:

  • 通過FTPSFTP刪除文件。 您必須配置服務器,但很可能已經有一個 FTP 或 SFTP 帳戶。 php 5 的FTPSFTP協議包裝器支持unlink ,因此如果您願意,可以使用它代替相應的刪除功能。
  • 如果你的服務器真的支持 WebDAV,你就必須使用CURL 擴展curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); 通過 HTTP 刪除文件。 不要忘記驗證!
  • 添加允許文件刪除的服務器端腳本。 如果您選擇基於 cookie 的身份驗證,請確保進行身份驗證(檢查用戶+密碼)並且不允許CSRF攻擊。

關於包裝器的 PHP 文檔說 HTTP 包裝器不支持取消鏈接。

您可以在文件系統中傳遞一個路徑來取消鏈接,例如:

unlink("/path_to_directory/$dl");

您嘗試使用的協議不支持取消鏈接文件。 有關更多信息,請參閱此處文檔

解決此問題取決於您的情況,您可以嘗試使用不同的協議,如支持文件操作的 FTP 或使用文件的本地路徑。 同樣重要的是要注意,您需要適當的權限才能執行這些操作,如果是 FTP,則需要用戶名和密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM