如果文件位于另一个目录中,如何使用PHP从服务器中删除文件?
这是我的页面布局:
projects/backend/removeProjectData.php
(此文件将删除我对数据库的所有条目,并且还应删除相关文件)public_files/22.pdf
(文件所在的位置。)
我正在使用的unlink
功能:
unlink('../../public_files/' . $fileName);
但这总是给我一个错误,该文件不存在。有任何想法吗?
如果文件位于另一个目录中,如何使用PHP从服务器中删除文件?
这是我的页面布局:
projects/backend/removeProjectData.php
(此文件将删除我对数据库的所有条目,并且还应删除相关文件)public_files/22.pdf
(文件所在的位置。) 我正在使用的unlink
功能:
unlink('../../public_files/' . $fileName);
但这总是给我一个错误,该文件不存在。有任何想法吗?
Answers:
以下应该有帮助
realpath
—返回规范化的绝对路径名is_writable
—告诉文件名是否可写unlink
—删除文件通过realpath运行文件路径,然后检查返回的路径是否可写,如果可写,请取消链接。
$files = [
'./first.jpg',
'./second.jpg',
'./third.jpg'
];
foreach ($files as $file) {
if (file_exists($file)) {
unlink($file);
} else {
// File not found.
}
}
file_exists
功能。否则,如果文件不存在,则会出现错误。
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);
}
unlink
作为函数的名称,因此请对其进行更新。
我知道这个问题有点老了,但这对我很有效,可以从正在处理的项目中删除图像。
unlink(dirname(__FILE__) . "/img/tasks/" . 'image.jpg');
本dirname(__FILE__)
节将打印出项目的基本路径。这/img/tasks/
是我基本路径下的两个文件夹。最后,还有我要删除的图像,您可以将其制作成所需的任何图像。
有了这个,我在服务器上删除文件并没有任何问题。