如何通过PHP删除文件?

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

这是我的页面布局:

  • projects/backend/removeProjectData.php (这个文件删除了我所有的数据库条目,也应该删除相关的文件)
  • public_files/22.pdf (文件所在的位置)

我正在使用unlinkfunction:

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

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

以下应该有所帮助

  • realpath – 返回规范化的绝对​​path名
  • is_writable – 告诉文件名是否可写
  • unlink – 删除文件

通过真实path运行你的文件path,然后检查返回的path是否可写,如果是的话,取消链接。

 $files = [ './first.jpg', './second.jpg', './third.jpg' ]; foreach ($files as $file) { if (file_exists($file)) { unlink($file); } else { // File not found. } } 

首先在文件上检查你的权限,确保你可以a)从脚本中看到它,并且b)能够删除它。

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

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

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

AIO的解决scheme,处理所有事情,这不是我的工作,但我只是改善自己。 请享用!

 /** * 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 unlink ( $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); } 

我知道这个问题有点老,但这是简单的东西,很适合我删除我正在处理的项目的图像。

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

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

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

您可以使用删除文件

 unlink($Your_file_path); 

但是如果你从它的httppath中删除一个文件,那么这个取消链接是不正确的。 您必须提供正确的文件path。