Utiliser le composant Filesystem de Symfony sur un lien symbolique

Développement,

Si je pose la question : « comment écrire dans un fichier qui est un lien symbolique ? » on va me répondre « file_put_contents ! ». Vous avez raison, mais si on peut utiliser des composants déjà fait, c’est mieux !

Sauf qu’avec le composant Filesystem de Symfony, ce n’est pas aussi simple ;)

En effet, si on utilise brutalement la méthode dumpFile, le lien symbolique sera détruit via la dernière instruction de la méthode qui déplace le fichier vers la cible (méthode rename).

Mais tout n’est pas perdu, il suffit de contourner le problème et d’utiliser la méthode copy :

use Symfony\Component\Filesystem\Filesystem;
 
$fs = new Filesystem();
 
$fs->dumpFile($temporaryFileName, $content);
$fs->copy($temporaryFileName, $fileName);

Ainsi le contenu est bien écrit dans le lien symbolique, et on utilise un composant reconnu !

Laisser un commentaire