如何通过PHP删除文件?

Ken*_*Ken 168 php file-io

如果文件在另一个目录中,如何使用PHP从我的服务器中删除文件?

这是我的页面布局:

  • projects/backend/removeProjectData.php (此文件删除数据库的所有条目,还应删除相关文件)
  • public_files/22.pdf (文件所在的位置.)

我正在使用这个unlink功能:

unlink('../../public_files/' . $fileName);

但这总是给我一个文件不存在的错误.有任何想法吗?

Gor*_*don 213

以下应该有所帮助

通过realpath运行文件路径,然后检查返回的路径是否可写,如果是,则取消链接.

  • @RitabrataGautam"如果我需要访问其他三个链接来了解你的回复是否非常有帮助?" - 是的.因为在访问链接后,您将了解它是如何工作的.如果我只是给你代码,你将无法理解,只需复制和粘贴.那你学到了什么?没有.此外,它的代码是非常*微不足道的. (13认同)
  • 我想知道w3shools是怎么做到的?http://www.w3schools.com/php/func_filesystem_delete.asp (7认同)
  • @Gordon我很抱歉..我使用的术语错了,这有很大的不同..我同意这是愚蠢的..但我试图意味着一个编码的例子会更有帮助..如果我需要访问其他三个链接了解你的回复是否非常有帮助?..再次说错话.我不是来自英语国家......虽然它不能成为借口...... (3认同)
  • 答案对我来说似乎很直接:但你想要的代码示例:$ path = realpath('../../ public_files /'.$ fileName); 如果(is_writable($路径)){取消关联($路径);} (2认同)

Ubi*_*Que 97

$files = [
    './first.jpg',
    './second.jpg',
    './third.jpg'
];

foreach ($files as $file) {
    if (file_exists($file)) {
        unlink($file);
    } else {
        // File not found.
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 投票使用`file_exists`函数.否则,如果文件不存在,您将收到错误. (11认同)

ric*_*age 16

首先检查您对文件的权限,以确保您可以a)从您的脚本中查看它,并且b)能够删除它.

您还可以使用从当前运行脚本的目录计算的路径,例如:

unlink(dirname(__FILE__) . "/../../public_files/" . $filename);
Run Code Online (Sandbox Code Playgroud)

(在PHP 5.3中我相信你可以使用__DIR__常量而不是dirname()我自己还没用过它)


ank*_*har 5

您可以使用删除文件

unlink($Your_file_path);
Run Code Online (Sandbox Code Playgroud)

但是,如果您要从其http路径中删除文件,则此取消链接无法正常工作。您必须提供正确的文件路径。


Jun*_*ari 5

AIO 解决方案,处理一切,这不是我的工作,我只是提高了自己。享受!

/**
 * Unlink a file, which handles symlinks.
 * @see https://github.com/luyadev/luya/blob/master/core/helpers/FileHelper.php
 * @param string $filename The file path to the file to delete.
 * @return boolean Whether the file has been removed or not.
 */
function unlinkFile ( $filename ) {
    // try to force symlinks
    if ( is_link ($filename) ) {
        $sym = @readlink ($filename);
        if ( $sym ) {
            return is_writable ($filename) && @unlink ($filename);
        }
    }

    // try to use real path
    if ( realpath ($filename) && realpath ($filename) !== $filename ) {
        return is_writable ($filename) && @unlink (realpath ($filename));
    }

    // default unlink
    return is_writable ($filename) && @unlink ($filename);
}
Run Code Online (Sandbox Code Playgroud)