Удаление файлов в более высоком каталоге - PullRequest
1 голос
/ 15 ноября 2010

У меня проблемы с удалением файла из более высокого каталога, я нашел это сообщение и попробовал его, но не повезло ....:

gotdalife на gmail dot com 25-Sep-200802: 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 \ bunker \ admin \ delete_file.php в строке 37

строка 37:

unlink($filename);

может кто угодновидите, что я сделал не так?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

Я всегда использую абсолютные имена файловых путей.

Я бы определил filedir как константу в вашей конфигурации, затем конкатенировал, чтобы у вас был абсолютный путь к файлу, а затем сделал бы вызов unlink ().

Кстати: я надеюсь, вы знаете, что ваш код очень небезопасен.

0 голосов
/ 15 ноября 2010

Смотрите здесь:

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

и здесь

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

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

Хотя я бы не советовал делать это согласно комментариям выше. Есть ли вариант для другого подхода?

...