我正在尝试使用PHP unlink()
函数删除文件夹中的特定文档。该特定文件夹已分配给 IIS 用户的完全权限。
代码:
$Path = './doc/stuffs/sample.docx';
if (unlink($Path)) {
echo "success";
} else {
echo "fail";
}
它保持返回失败。sample.docx 确实驻留在该特定路径上。好心提醒。
在 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__
获取您的相对文件位置,以便您可以导航到感兴趣的文件。