13

我正在尝试使用PHP unlink()函数删除文件夹中的特定文档。该特定文件夹已分配给 IIS 用户的完全权限。

代码:

$Path = './doc/stuffs/sample.docx';
if (unlink($Path)) {    
    echo "success";
} else {
    echo "fail";    
}

它保持返回失败。sample.docx 确实驻留在该特定路径上。好心提醒。

4

5 回答 5

13

在函数 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';
于 2012-07-13T03:21:24.247 回答
9

试试这个:

$Path = './doc/stuffs/sample.docx';
if (file_exists($Path)){
    if (unlink($Path)) {   
        echo "success";
    } else {
        echo "fail";    
    }   
} else {
    echo "file does not exist";
}

如果你得到文件不存在,你有错误的路径。如果不是,则可能是权限问题。

于 2012-07-13T03:07:37.337 回答
2

完成权限问题后,这应该可以工作。也试试

ini_set('display_errors', 'On');  

这会告诉你什么是错的

于 2012-07-13T04:19:50.363 回答
1
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
于 2017-11-30T11:47:28.917 回答
0

您需要感兴趣文件的完整文件路径。例如:C:\doc\stuff\sample.docx。尝试使用__DIR____FILE__获取您的相对文件位置,以便您可以导航到感兴趣的文件。

于 2012-07-13T03:08:41.017 回答