Hébergements Web - Imposible de supprimer un fichier avec la fonction PHP unlink()
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Frage

Imposible de supprimer un fichier avec la fonction PHP unlink()

Von
GaetanD18
Erstellungsdatum 2023-05-15 06:58:20 (edited on 2024-09-04 12:25:58) in Hébergements Web


Bonjour à toutes et à tous,

J'héberge mon site grâce à l'offre perso OVH
J'utilise Symfony et j'ai développé en local un système pour uploader et supprimer des images comme une galerie, pour cela le code envoie à la base de donnée le nom de l'image généré, et l'image est envoyé dans le répertoire (/www/public/uploads), leur droit d'accès est de 0644

Je rencontre la problématique suivante :
Dans mon code, au moment de supprimer une ou plusieurs images, j'ai recours a la fonction unlink() que j'utilise de la façon suivante
`unlink('/www/public/uploads/'.$photo->getName());` où $photo est la requête de la base de donnée pour récupérer le nom de l'image.
Mais rien ne se passe, j'ai tenté de jouer avec le chemin relatif, puis absolu, et je n'ai aucun résultat.

Si quelqu'un est plus à même de m'expliquer pourquoi ma fonction ou mon chemin est incorrect, ou même simplement me donner une solution viable, je vous en serai très reconnaissant, j'ai l'impression de devenir fou

Merci d'avance !


5 Antworten ( Latest reply on 2023-05-22 13:25:34 Von
Gaston_Phone
)


unlink('/www/public/uploads/'.$photo->getName()); où $photo est la requête de la base de donnée pour récupérer le nom de l'image.

Bonjour @GaetanD18

Et si vous découpiez votre commande en DEUX lignes :
- Requête pour récupérer le nom du fichier,
- unlink ...

Bonjour,

Quelle erreur renvoi le unlink ?

Bonjour,

C'est pas juste un problème de lien relatif ?

Car hardcoder le path c'est pas la meilleure chose à faire.

Cordialement, janus57

Il y a aucune erreur de visible. Quand je code en local ça fonctionne même si le chemin est différent, ça supprime tout correctement, c'est juste une fois mis en ligne (et donc en production, sans erreur visible) que la suppression ne fonctionne pas

C'est déjà le cas
if (isset($_GET['supprimerid'])){
$photo = $entityManager->getRepository(Images::class)->findOneBy('id'=>$_GET['supprimerid']));
if ($photo != null){
unlink('/www/public/uploads/'.$photo->getName());
$entityManager->remove($photo);
$entityManager->flush();
}
}

Le souci c'est que je n'ai aucune idée de comment est géré le lien relatif depuis le service OVH ahah...
Etant donné que mon index.php est dans mon dossier /www alors mon chemin relatif serait "public/uploads" mais ça ne fonctionne pas non plus


/www/public/uploads


Sur OVH le chemin n'est pas /www/public .
Essayez /home/votrelogin/www (en modifiant votrelogin évidemment)

Bonjour @GaetanD18

Le chemin une adresse d'un fichier sur un serveur de suite Internet dépend de deux paramètres :

- le premier chemin est celui que l'on rencontre en allant par FTP sur l'hébergement OVH.

- le deuxième chemin et celui que l'on voit lorsque l'on est sur une page du site et là il s'agit d'un chemin relatif qui tient compte du chemin de la page. Par exemple si votre page se trouve à l'adresse www/toto/tutu, il vous faudra alors décompter les deux niveaux toto et tutu avec ../../ pour se positionner à l'adresse www