web-dev-qa-db-fra.com

Comment utiliser la fonction Unlink ()

J'essaie d'utiliser la fonction PHP unlink() pour supprimer le document spécifique du dossier. Ce dossier particulier a déjà été attribué à tous les droits sur l'utilisateur IIS. 

Code:

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

Il faut que le retour échoue. Le fichier sample.docx réside sur ce chemin particulier. Veuillez aviser.

10
JLearner

J'ai trouvé cette information dans les commentaires de la fonction unlink ()

Sous Windows et Apache, refuser l'accès au fichier est une erreur habituelle Permettant de dissocier le fichier. Pour supprimer un fichier, vous devez changer le propriétaire du fichier. Un exemple:

chown($tempDirectory . '/' . $fileName, 666); //Insert an Invalid UserId to set to Nobody Owern; 666 is my standard for "Nobody" 
unlink($tempDirectory . '/' . $fileName); 

Alors essayez quelque chose comme ça:

$path = './doc/stuffs/sample.docx';

chown($path, 666);

if (unlink($path)) {
    echo 'success';
} else {
    echo 'fail';
}

EDIT 1

Essayez d'utiliser ceci dans le chemin:

$path = '.'
         . DIRECTORY_SEPARATOR . 'doc'
         . DIRECTORY_SEPARATOR . 'stuffs'
         . DIRECTORY_SEPARATOR . 'sample.docx';
10
Marcio Mazzucato

Essaye ça:

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

Si vous obtenez le fichier n'existe pas, vous avez le mauvais chemin. Sinon, il peut s'agir d'un problème d'autorisations.

6
Travis

Cela devrait fonctionner une fois que vous avez terminé avec le problème d'autorisation. Essayez aussi

ini_set('display_errors', 'On');  

Cela vous dira quoi de mal

2
leet
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
antelove

Vous avez besoin du chemin complet du fichier qui vous intéresse. Par exemple: C:\doc\stuff\sample.docx. Essayez d'utiliser __DIR__ ou __FILE__ pour obtenir la position relative de votre fichier afin de pouvoir naviguer jusqu'au fichier qui vous intéresse.

0
James Woodruff