Как использовать функцию Unlink()


Я пытаюсь использовать функцию PHP unlink() для удаления определенного документа в папке. Этой конкретной папке уже присвоены полные права пользователя IIS.

Код:

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

Это приведет к сбою возврата. В sample.docx действительно находится на этом конкретном пути. Пожалуйста, посоветуйте.

Author: neophyte, 2012-07-13

5 answers

Я нашел эту информацию в комментариях функции 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';
 10
Author: Marcio Mazzucato, 2017-02-22 12:54:07

Попробуйте это:

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

Если вы получаете файл, которого не существует, у вас неверный путь. Если нет, то это может быть проблема с разрешениями.

 6
Author: Travis, 2012-07-13 03:07:37

Это должно сработать, как только вы закончите с проблемой разрешений. Также попробуйте

ini_set('display_errors', 'On');  

Это подскажет вам, что не так

 2
Author: leet, 2012-07-13 04:19:50

Вам нужен полный путь к интересующему файлу. Например: C:\doc\stuff\sample.docx . Попробуйте использовать __DIR__ или __FILE__, чтобы получить относительную позицию файла, чтобы вы могли перейти к интересующему файлу.

 0
Author: James Woodruff, 2012-07-13 03:08:41
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
 0
Author: antelove, 2017-11-30 11:47:28