如何通过PHP删除文件?
如果文件位于另一个目录中,如何使用PHP从服务器中删除文件?
这是我的页面布局:
-
projects/backend/removeProjectData.php
(这个文件删除了我所有的数据库条目,也应该删除相关的文件) -
public_files/22.pdf
(文件所在的位置)
我正在使用unlink
function:
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。