Bonjour à tous,

Lorsque j'éxécute des fixtures d'images sur Heroku, des noms d'images sont créés alors que les images n'existent pas réellement sur le serveur, je m'explique :

Une image signalée sur le site comme étant inexistente et en 404 n'est effectivement pas présente dans le dossier uploads du serveur, par contre dans ledit dossier d'autres noms d'images sont présents aucun ne correspondant au path enregistré en bdd, comme si il y avait un temps de retard ou d'avance ...

En ce qui concerne le local tout marche parfaitement, , aucun problème de ce coté là, les images s'affichent...

Si vous avez une idée de ce qui peut provoquer cette différence, je suis preneur ...

 //Création de la liste d'images pour le véhicule actuel 
            $sourceDir = 'src/DataFixtures/img/';

            //Dossier de destination
            $folder = 'vehicules';

            //Mise en tableau de toutes les images présentes dans le dossier local (src/Datafixtures/img)
            $files = array_values(array_diff(scandir($sourceDir), array('..', '.')));
            //Extraction du chemin complet et des noms de fichiers
            $filesPath = [];
            $filesNames = [];

            //Remplissage des tableaux pour chaque fichier
            foreach ($files as $file) {
                $filesPath[] = $sourceDir . $file;
                $filesNames[] = $file;
            }
            //Exécution d'un random sur le tableau d'images en local
            $fichiers = $faker->randomElements($filesNames, 4);

            // création de chaque fichier image
            for ($k = 0; $k < count($fichiers); $k++) {

                $photo = new UploadedFile($sourceDir . $fichiers[$k], $fichiers[$k], null, null, true);

                //Appel au service d'ajout d'images 
                $fichier = $this->picturesService->add($photo, $folder, 300, 300, false);

                $photoUploaded = new Photos();
                $photoUploaded->setNom($fichier);
                $v->addPhoto($photoUploaded);

                $manager->persist($photoUploaded);
                $manager->persist($v);
            }
            $manager->flush();
        }

PicturesServices.php :


namespace App\Service;

use Exception;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\File\UploadedFile;

use function PHPUnit\Framework\fileExists;

class PicturesService
{

    private $params;

    public function __construct(ParameterBagInterface $params)
    {
        $this->params = $params;
    }

    public function add(UploadedFile $picture, ?string $folder = '', ?int $width = 250, ?int $height = 250, $moveFile = true)
    {
        //Création d'un nouveau nom d'image
        $fichier = md5(uniqid(rand(), true)) . '.webp';

        //Récupération des infos de l'image
        $picture_infos = getimagesize($picture);

        if ($picture_infos === false) {
            throw new Exception('Format d\'image incorrect');
        }
        //Vérification du format de l'image
        switch ($picture_infos['mime']) {
            case 'image/png':
                $picture_source = imagecreatefrompng($picture);
                break;
            case 'image/jpeg':
                $picture_source = imagecreatefromjpeg($picture);
                break;
            case 'image/webp':
                $picture_source = imagecreatefromwebp($picture);
                break;
            case 'image/gif':
                $picture_source = imagecreatefromwebp($picture);
                break;
            default:
                throw new Exception('Format d\'image incorrect');
        }
        //Recadrer l'image et récupération des dimensions
        $imageWidth = $picture_infos[0];
        $imageHeight = $picture_infos[1];

        //Vérification de l'orientation de l'image
        switch ($imageWidth <=> $imageHeight) {
            case -1: //Portrait
                $squareSize = $imageWidth;
                $src_x = 0;
                $src_y = (int)($imageHeight - $squareSize) / 2;
                break;

            case 0: //Carré
                $squareSize = $imageWidth;
                $src_x = 0;
                $src_y = 0;
                break;

            case 1: //Paysage
                $squareSize = $imageHeight;
                $src_x = (int)($imageWidth - $squareSize) / 2;
                $src_y = 0;
                break;
        }

        //Création d'une nouvelle image vierge
        $resized_picture = imagecreatetruecolor($width, $height);
        imagecopyresampled($resized_picture, $picture_source, 0, 0, $src_x, $src_y, $width, $height, $squareSize, $squareSize);

        //Création du chemin
        $path = $this->params->get('images_directory') . $folder;

        //Création du dossier
        if (!file_exists($path . '/mini/')) {
            mkdir($path . '/mini/', 0755, true);
        }

        //Stockage de l'image recadrée
        imagewebp($resized_picture, $path . '/mini/' . $width . 'x' . $height . '-' . $fichier);
        if ($moveFile) {
            $picture->move($path . '/', $fichier);
        }

        return $fichier;
    }

    public function delete(string $fichier, ?string $folder = '', ?int $width = 250, ?int $height = 250)
    {
        if ($fichier !== 'default.webp') {
            $success = false;
            $path = $this->params->get('images_directory') . $folder;
            $thumbnail = $path . '/mini/' . $width . 'x' . $height . '-' . $fichier;

            if (fileExists($thumbnail)) {
                unlink($thumbnail);
                $success = true;
            }

            $original = $path . '/' . $fichier;

            if (fileExists($original)) {
                unlink($original);
                $success = true;
            }

            return $success;
        }

        return false;
    }
}

Aucune réponse