Question aux pros de Kirby CMS !

J’ai fait un site avec beaucoup d’images volumineuses qui sont servies « à la bonne taille » par Kirby avec la fonction crop(). Jusque là super, sauf qu'en prod certaines images (pas toutes) ne sont pas prises en compte et je me retrouve avec quelques miniatures de 5333 px de large (et plus de 1 Mo) au lieu des 1000 px demandés, ce qui est évidemment hautement pénalisant.

Des idées sur ce qui se passe ?

(1/2)

Le site : https://hpaa.fr/

#kirbyCMS #php

En local (XAMPP de base) tout roule comme sur des roulettes, les versions de PHP sont identiques et a priori j’ai bien toutes les bonnes libs sur la prod (GD & co.).

J’ai mis l'hébergeur sur le coup (coucou @alwaysdata ❤️) qui semble dire que le processus réclamerait trop de RAM et s’arrêterait en route, et m'a conseillé d’uploader directement les images que j’ai en local dans /media… mais ça ne fonctionne toujours pas.

Mastodev, fais ta magie ? 🙃

(2/2)

@STPo @alwaysdata Peut-être essaye de supprimer le dossier /media pour que Kirby le regènère (une petite sauvegarde de /media avant au cas où ...)
@pixenjoy @alwaysdata Salut Gilles, oui je viens de le faire… sans résultat.
@STPo Tu veux que je teste sur mon VPS avec une url de test ?
@pixenjoy Je ne sais pas ce que ça veut dire, mais je prends tout 😀
@STPo Tu m'envoies une copie de ton site dans un zip en utilisant https://www.swisstransfer.com/fr et je l'installe sur mon serveur (Virtual Private Server = un serveur dans le cloud que je loue et administre en admin) et je lui met une url de test aux fesses et on regarde si le bug se reproduit avec une bière et un saut de pop-corns dans les mains.
SwissTransfer - Envoi sécurisé et gratuit de gros fichiers

Envoyez jusqu'à 50 Go - Gratuit et sans inscription - Gardez vos transferts jusqu'à 30 jours.

Swiss Transfer
@pixenjoy Ah bah ouais go ! Et tu gagnes une bière-maroilles quand tu passes !
@STPo Deal mon chum !
@pixenjoy Et j’avais zappé que tu étais végane, du coup ce sera protéines de soja texturées…
@STPo Oui, j'ai fais ça pour faire chier les Masculinistes #HommeSoja
@pixenjoy Faut s’qui faut !
@STPo Si votre ampoule de plafonnier s'éteint par intermittence, c'est parce que je télécharge le ZIP de @STPo !
@pixenjoy La prochaine fois je fais ça sous SPIP.
@STPo @pixenjoy tenez nous au jus de l'issue du problème. J'ai fait plusieurs sites Kirby dont certains du genre avec des packshots uploadées sous forme d'images de plusieurs mo et j'ai jamais eu ce soucis... curieux de voir à quoi ça peut être dû, ocazou pour les prochains projets
Avec @pixenjoy au commande ca devrait le faire.
@Julianoe @pixenjoy Ça marche très bien sur le serveur de test de Gilles en tout cas… je suis à court d'idées.

@STPo @pixenjoy si je comprends bien ton hébergeur dit que ça peut prendre beaucoup de ram. Est-ce que tu as accès à des logs d'erreur ?
Si c'est en effet cela le problème tu devrais avoir une erreur du genre "Fatal error: Allowed memory size of x bytes exhausted"

Si tu as accès la config PHP/Apache tu peux essayer d'augmenter la limite "memory_limit". Poser un phpinfo() en local et en ligne pour voir si ce paramètre est le même sur les deux pourrait aider

@STPo @pixenjoy si mettons ton serveur renvoie memory_limit = 64mo et ton local XAMP memory_limit = 256mo ça expliquerait déjà la différence entre les deux.
Tu configures XAMP pour avoir la memory_limit identique à ton serveur.
Si ça foire désormais en local, c'est bien que c'est probablement ça le problème.

La reco dans ces cas là des devs de Kirby semble en effet de basculer sur l'utilisation de ImageMagick car ce module sait mieux gérer les images très lourdes.

@STPo @pixenjoy ça date d'une version ancienne de Kirby mais ce thread de forum décrit exactement le même problème que ce que tuas j'ai l'impression et c'est en effet un problème de mémoire qui semble être le coupable https://forum.getkirby.com/t/potential-memory-leak-or-am-i-just-using-too-large-files/4870/13
Potential Memory leak or am I just using too large files?

@Thiousi Kirby is using imagemagick from the command-line, rather than PHP’s Imagick-extensions. so imagemagicks binary convert has to installed on the server. @JIrving In order to make it work, you probably need to set the correct path to convert in config.php in addition to changing the driver. See: https://getkirby.com/docs/cheatsheet/options/thumbs-bin

Kirby Forum

@STPo @pixenjoy ça me parait bizarre parce qu'en utilisant ton fichier source m11-site-bd-1.jpg qui fait 1.7mo et qui ne passe pas sur ton site, même en limitant la memory_limit et max_memory_limit à 16M, en faisant un crop en 1000x750, ça fonctionne.

Si je descend à 8M, j'ai un crash à cause de la mémoire : mais le site crash complètement avec une erreur (si debug=true j'ai bien une erreur "allowed memory").
Par contre je n'ai pas le fichier qui passe sans être process.

@STPo @pixenjoy pour débugguer plus il faudrait voir comment la fonction est appelée etc.

@Julianoe @pixenjoy Merci pour tout ça, j’avais déjà testé pour memory_limit, j’ai forcé à 512 mais ça ne change rien…

J'ai bien accès aux logs mais je n'y comprends pas grand-chose… En gros il y a du timeout et du brun sur « mod_fcgid », et aussi du « fatal Error Unable to create lock file: Disk quota exceeded » (peut-être ça ?).

Merci pour le lien du forum, je redoutais de bricoler avec ImageMagick…

@Julianoe @pixenjoy Trop de points de suspension dans ce post pardon.
@STPo @pixenjoy disk quota exceeded: tu as combien d'espace disque libre sur ce serveur/hébergement ?
ça me semblerait étrange que ce soit ça car tu as bien un nouveau fichier qui est créé (avec les dimensions dans le nom)
@Julianoe A priori je suis large de ce côté-là.

@STPo tu as vérifié avec memory_limit mais max_memory_limit est de combien ?

Mais ça ne me semble pas être ça de ce que tu me dis sinon tu aurais des erreurs en référence à cela dans les logs.

@STPo ta fonction qui crop ressemble à quoi ?

@Julianoe C’est vraiment du Kirby basique a priori :

<img src="<?= $cover->crop(1000, 750)->url() ?>" alt="<?= $cover->alt()->esc() ?>">

@STPo ça fonctionne sur mon setup, même avec memory basse, sans imagemagick activé 🤔🤔🤔🤔
@STPo ça fail également si tu demandes une image plus petite que 1000px ? (je vois que l'image aux max est affichée à 450px de large)
@Julianoe Je crois que oui. Et oui c’est très zarb, ça marchait chez @pixenjoy aussi 🤔
@STPo @pixenjoy je n'ai pas vu de toot où tu le précisais mais tu es sur Kirby5 et PHP8.5?
@Julianoe Kirby 4.7.0 et PHP 8.2.30 en prod (8.2.12 en local).
@STPo @pixenjoy j'ai réussi à reproduire le bug en prod sur PHP8.3 aussi (Kirby5.3)
Je regarde de plus près et je vous redirai

@STPo je viens de tester avec ton image avec 16Mo de memory_limit et ça passe avec ce genre de fonction toute bête et je n'atteint pas la limite il semblerait

```
if ( $backgroundImage ) {
// crop into a 1000 x 750
echo $backgroundImage->crop(1000, 750, [
'quality' => 70,
'crop' => 'center'
]);
}
```

@Julianoe Ah pardon. Je regarderai quand-même quand je reprendrai la main dessus.
@STPo @Julianoe En prod, regarde dans /content dans le dossier du projet qui contient l'image qui pose problème, si il y a pas un fichier .lock qui traine. Faut autoriser l'affichage des fichiers cachés pour le voir. Si tu le vois, supprime le et retest.
@STPo @Julianoe j'ai peur qu'il ne faille prévenir l'armée, un porte avions ou deux devrait suffir !