如果文件在另一个目录中,如何使用PHP从我的服务器中删除文件?
这是我的页面布局:
projects/backend/removeProjectData.php
(此文件删除数据库的所有条目,还应删除相关文件)public_files/22.pdf
(文件所在的位置.) 我正在使用这个unlink
功能:
unlink('../../public_files/' . $fileName);
但这总是给我一个文件不存在的错误.有任何想法吗?
Gor*_*don 213
以下应该有所帮助
realpath
- 返回规范化的绝对路径名is_writable
- 判断文件名是否可写unlink
- 删除文件通过realpath运行文件路径,然后检查返回的路径是否可写,如果是,则取消链接.
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)
ric*_*age 16
首先检查您对文件的权限,以确保您可以a)从您的脚本中查看它,并且b)能够删除它.
您还可以使用从当前运行脚本的目录计算的路径,例如:
unlink(dirname(__FILE__) . "/../../public_files/" . $filename);
Run Code Online (Sandbox Code Playgroud)
(在PHP 5.3中我相信你可以使用__DIR__
常量而不是dirname()
我自己还没用过它)
您可以使用删除文件
unlink($Your_file_path);
Run Code Online (Sandbox Code Playgroud)
但是,如果您要从其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);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
305017 次 |
最近记录: |