如何通过PHP删除文件?

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

以下是我的页面布局:

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

我正在使用unlink函数:

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

但这总是给我一个错误,该文件不存在。有什么想法吗?

355500 次浏览

以下内容应该会有所帮助

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

首先检查您对该文件的权限,以确保您可以a)从脚本中看到它,B)能够删除它。

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

unlink(dirname(__FILE__) . "/../../public_files/" . $filename);

(在PHP 5.3中,我相信您可以使用__DIR__常量代替dirname(),但我自己还没有使用它)

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


foreach ($files as $file) {
if (file_exists($file)) {
unlink($file);
} else {
// File not found.
}
}

我知道这个问题有点老,但这是一个简单的问题,可以很好地从我正在做的项目中删除图像。

unlink(dirname(__FILE__) . "/img/tasks/" . 'image.jpg');

dirname(__FILE__) ”部分将打印出项目的基本路径。/img/tasks/是我的基本路径下面的两个文件夹。最后,我想删除我的图像,你可以把它做成任何你需要的东西。

有了这个,我没有任何问题得到我的服务器上的文件,并删除它们。

您可以使用删除文件

unlink($Your_file_path);

但是如果你从它的HTTP路径中删除一个文件,那么这个取消链接就不能正常工作。你必须给一个正确的文件路径。

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);
}