删除更高目录中的文件

时间:2010-11-15 14:23:31

标签: php file delete-file unlink chdir

我在从更高的目录中删除文件时遇到问题,我发现这篇帖子并尝试了但没有运气....:

  2008年9月25日,来自gmail dot com的getdalife   02:04

     

对任何有问题的人   权限被拒绝错误,它是   有时会在你尝试时引起   删除文件夹中的文件   在您的层次结构中更高   工作目录(即尝试时   删除以“../”)开头的路径。

     

所以要解决这个问题,你   可以使用chdir()来改变工作   目录到文件所在的文件夹   你要取消链接的位置。

<?php
>     $old = getcwd(); // Save the current directory
>     chdir($path_to_file);
>     unlink($filename);
>     chdir($old); // Restore the old working directory     ?>

这是我目前的代码:

session_start();

if (!isset($_SESSION['agent']) OR ($_SESSION['agent'] !=md5($_SERVER['HTTP_USER_AGENT']))){

    require_once ('includes/login_functions.inc.php');
    $url = absolute_url();
    header("Location: $url");
    exit();
}  



$folder = $_GET['folder'];
$filename = $_GET['name'];
$path = "../gallery/photos/$folder";

if (isset($_POST['submitted'])) {

    if ($_POST['sure'] == 'Yes') {  

        $old = getcwd(); // Save the current directory
        chdir($path);
        unlink($filename);
        chdir($old); // Restore the old working directory  

    }
    else{

        echo '<p>The photo has NOT been deleted.</p>';
    }
}

我收到错误消息:

  

警告:unlink()[function.unlink]:   没有错误   j:\ XAMPP \ htdocs中\掩体\ ADMIN \ delete_file.php   第37行

第37行:

unlink($filename);

任何人都可以看到我做错了吗?

2 个答案:

答案 0 :(得分:2)

我总是使用绝对文件路径名。

我在你的配置中将filedir定义为常量,然后连接以便你有一个绝对文件路径,然后调用unlink()。

顺便说一下:我希望你知道你的代码高度不安全。

答案 1 :(得分:0)

见这里:

http://bugs.php.net/bug.php?id=43511

在这里

http://php.bigresource.com/Track-php-03TimDKO/

http://www.phpbuilder.com/board/showthread.php?t=10357994

虽然根据上面的评论,我不建议这样做。是否有选择不同的方法?