Bonjour à tous,

Lors du déploiement sur Heroku, me revient un message "php floating deprecated error" au moment où rentre en jeu ma fonction de création d'images randomisée... J'ai bien compris ce qui se passe, les floats perdent la précision lorsque convertis en integer, mais alors comment remédier à cela dans une fonction comme celle là ?

Du coup, je ne vois pas les images qui sont créées, elles sont probablement corrompues vu qu'en local par contre ça marche nickel ...

D'ailleurs j'aimerai savoir pourquoi lors du déploiement Heroku détecte et renvoie des messages d'erreur à tout va, des fois certains sans gravité, alors que je n'ai jamais aucun retour en dev...

Serait-ce parceque la version de Symfony n'est peut être pas la même ? (je suis en 6.2).

J'aimerai bien bénéficier des mêmes messages d'erreur en dev !, merci

<?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