我正在尝试使用PHP unlink()
函数来删除文件夹中的特定文档。这个文件夹已经被分配给IIS用户完全权限。
代码:
$Path = './doc/stuffs/sample.docx';
if (unlink($Path)) {
echo "success";
} else {
echo "fail";
}
它一直返回失败。sample.docx确实位于该特定路径上。请给予建议。
我在unlink()函数的评论中找到了这个信息。
在Windows系统和Apache下,拒绝访问文件是解除文件链接时常见的错误。为了删除文件,你必须更改文件的所有者。以下是一个示例:
chown($tempDirectory . '/' . $fileName, 666); //Insert an Invalid UserId to set to Nobody Owern; 666 is my standard for "Nobody"
unlink($tempDirectory . '/' . $fileName);
那么尝试像这样:
$path = './doc/stuffs/sample.docx';
chown($path, 666);
if (unlink($path)) {
echo 'success';
} else {
echo 'fail';
}
编辑 1
尝试在路径中使用这个:
$path = '.'
. DIRECTORY_SEPARATOR . 'doc'
. DIRECTORY_SEPARATOR . 'stuffs'
. DIRECTORY_SEPARATOR . 'sample.docx';
试试这个:
$Path = './doc/stuffs/sample.docx';
if (file_exists($Path)){
if (unlink($Path)) {
echo "success";
} else {
echo "fail";
}
} else {
echo "file does not exist";
}
ini_set('display_errors', 'On');
define("BASE_URL", DIRECTORY_SEPARATOR . "book" . DIRECTORY_SEPARATOR);
define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . BASE_URL);
$path = "doc/stuffs/sample.docx";
if (unlink(ROOT_PATH . $Path)) {
echo "success";
} else {
echo "fail";
}
// http://localhost/book/doc/stuffs/sample.docx
// C:/xampp/htdocs\book\doc/stuffs/sample.docx
您需要获取感兴趣文件的完整文件路径。例如:C:\doc\stuff\sample.docx。尝试使用__DIR__
或__FILE__
来获取相对文件位置,以便您可以导航到感兴趣的文件。
$Path = '/doc/stuffs/sample.docx'
- Marcio Mazzucatofile_exists()
检查过它了吗? - SilverSnake