2012-07-13 54 views
7

我试图使用PHP unlink()函数删除文件夹中的特定文档。该特定文件夹已被分配给IIS用户的完整权限。如何使用Unlink()函数

代码:

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

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

+0

你检查,如果你有权限删除的文件?另外,尝试使用绝对路径,如下所示:'$ Path ='/ doc/stuffs/sample.docx'' – 2012-07-13 03:05:17

+0

yes。我可以下载那个特定的文件,这样我的路径就可以工作了。 – JLearner 2012-07-13 03:07:28

+0

如果你确定权限是正确的,我猜测路径是错误的,就像马西奥所说的那样。你有没有试过用'file_exists()'检查它? – SilverSnake 2012-07-13 03:08:03

回答

9

我发现这个信息in the comments of the function 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'; 
+0

它不起作用。它落入else语句失败:( – JLearner 2012-07-13 03:56:18

+0

@JLearner,试着做我已经完成的新编辑 – 2012-07-13 04:04:16

+0

我在文件路径上做了一些粗心的错误,把1'。'lees =。= – JLearner 2012-07-13 05:09:27

6

试试这个:

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

如果你得到的文件不存在,你走错了路。如果不是,它可能是一个权限问题。

+0

嗨特拉维斯。它给我的文件不存在。但路径也用于下载文件,它的工作原理.... – JLearner 2012-07-13 03:10:57

+0

./表示路径是相对的这个脚本是从同一个目录下运行的脚本运行的? – Travis 2012-07-13 03:23:17

+0

你提到的路径是从另一个页面上获得的,它的前面有一个./,你能提供更多的代码还是深入参考文件路径的来源? – Travis 2012-07-13 03:24:46

0

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

+0

我无法做到这一点,因为该特定路径是从另一个网页解析,前面有'./'。 – JLearner 2012-07-13 03:13:42

+0

您是否试图删除其他网站的文件系统上的文件? – 2012-07-13 03:19:08

+0

它在我的同一个网络服务器 – JLearner 2012-07-13 04:01:49

2

这应该w ork一旦你完成了权限问题。也可以尝试

ini_set('display_errors', 'On'); 

,会告诉你什么是错

+0

它说没有这样路径或目录..但它确实存在.. – JLearner 2012-07-13 05:04:08

+1

尝试取消链接($ _ SERVER ['DOCUMENT_ROOT']。“/ doc/stuffs/sample.docx”); – leet 2012-07-13 05:12:34

0
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