PHP : Comment activer extension GD ?

Postez ici toutes vos demandes d’assistance générale concernant le fonctionnement de Linux Mint, qui n'entrent pas dans les autres rubriques.
Did

PHP : Comment activer extension GD ?

Message par Did »

Bonjour à toutes et tous,
avant de faire des bêtises, je préfère vous demander.... :)
Je souhaite faire afficher une image en php, qui contiendra du texte.
Dans ma progression, je tombe sur une erreur : mon système ne reconnaît pas certaines fonctions comme :
Call to undefined function imagecreatefromjpeg()
Après divers recherches, notamment ici : /var/log/apache/error.log
je vois que l'extension GD n'est pas installée ou activée.
Une recherche sur le Net, me mène à cette page, sur le forum Mint en anglais :
https://forums.linuxmint.com/viewtopic.php?t=174534
qui résout le problème avec :
had to run this command in the terminal:

sudo apt-get install php5-gd
Mais j'y lis un "php5".... et moi je tourne en php8.1... Est-ce vraiment cette commande que je dois faire, où est-ce qu'il y a mieux ?

Votre conseil svp ? Merci d'avance. :)
Did

Re: PHP : Comment activer extension GD ?

Message par Did »

Après plusieurs recherches...
je trouve un site qui conseille d'aller voir sur la logithèque, je trouve qu'il y a 2 paquets dispo, mais non installés :
php-gd ("module for php [default]", est-il écrit) et php8.1-gd

Dois-je installer les 2, pour assurer une progression ? ou le dernier 8.1 suffit ?

Je pense avoir résolu mon souci. je dirais que le dernier devrait suffire.
si quelqu'un confirme... et sinon, je lance (là, de la logithèque, je ne risque pas de faire n'importe quoi, puisque c'est proposé par la logithèque justement).
Did

Re: PHP : Comment activer extension GD ?

Message par Did »

Php8.1-gd installé.

Mais la fonction imagecreatefromjpeg() n'est toujours pas reconnue.

D'ailleurs, dans la page avec phpinfo(), l'extension php GD n'est pas activée, je ne trouve pas "GD Support enabled" ou "GD Version ..." :(

Donc le problème persiste.
Avatar du membre
yoman
Messages : 75
Enregistré le : lun. 20 févr. 2023 21:21

Re: PHP : Comment activer extension GD ?

Message par yoman »

Bonjour

Si l'extension GD n'est pas activée malgré l'installation de php8.1-gd, tu dois peut-être activer l'extension manuellement dans le fichier de configuration PHP.

Ouvre le fichier de configuration PHP php.ini. tu peux le trouver en exécutant la commande suivante :

Code : Tout sélectionner

sudo nano /etc/php/8.1/cli/php.ini
Recherche la ligne ;extension=gd et supprime le point-virgule au début de la ligne pour activer l'extension GD.

Sauvegarde le fichier.

Redémarre Apache pour que les modifications prennent effet :

Code : Tout sélectionner

sudo systemctl restart apache2
Après avoir activé l'extension GD dans le fichier de configuration PHP, tu devrais être en mesure d'utiliser la fonction imagecreatefromjpeg() sans problème.
HP Pavilion 17
Opensuse Tumbleweed
Kernel: 6.14.0-rc6-1
KDE Plasma v: 6.3.3
AMD Radeon R5 / Realtek RTL8723BE
Realtek Bluetooth
Storage Hitachi : 931.51 GiB / MeM : 16 GiB
* LMDE 5 / Kernel 6.2.12-xanmod1 / Cinnamon 5.6
Did

Re: PHP : Comment activer extension GD ?

Message par Did »

Bonsoir,
merci yoman.

J'ai déjà fait ça (enlever le ";") + restart, mais ça ne marche quand même pas.

à préciser qu'avec un phpinfo(), chez moi, le php.ini est ici :

Code : Tout sélectionner

Loaded Configuration File 	/etc/php/8.1/apache2/php.ini 

C'est donc ce php.ini que j'ai modifié. (et j'ai aussi modifié l'affichage des erreurs cf https://openclassrooms.com/fr/courses/9 ... es-erreurs, ce qui fait que je les vois depuis, ça confirme à priori que c'est le bon php.ini à modifier.)

Et j'ai toujours encore une

Code : Tout sélectionner

Fatal error: Uncaught Error: Call to undefined function imagecreatefromjpeg() in /var/www/
en lançant un fichier php dans FF, dont voici le code :

Code : Tout sélectionner

<?php
echo "bla";  //pour tester si le php est lu
$nom_image = "./Img/image.jpeg";  // le nom de votre image avec l'extension jpeg
$texte = "votre texte";  // Le texte que vous désirez écrire sur l'image
 
//header("Content-type: image/jpeg");
$image = imagecreatefromjpeg($nom_image);
$blanc = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 5, 15, 15,$texte, $blanc);
imagejpeg($image);
Et si j'enlève les"//" devant header, j'ai un écran noir, et un message qui me dit que "l'image ne peut être affichée, car elle contient des erreurs."

(Le //header, c'est pour tester si le fichier php est traité, et faire afficher les erreurs, au cas où.)
Avatar du membre
yoman
Messages : 75
Enregistré le : lun. 20 févr. 2023 21:21

Re: PHP : Comment activer extension GD ?

Message par yoman »

Re

Je comprends l'erreur du code, tu as un soucis de Texte sur Image JPEG, et la sortie de l'image est manquante dans le code :

Essai d'installer quand même :

Code : Tout sélectionner

sudo apt install php-gd
Ça devrait aussi t'installer quelques dépendances supplémentaires peut-être manquante, et au moins cette piste aura été vue.

Oublie php5, la résolution en anglais forum de Mint date de 2014
HP Pavilion 17
Opensuse Tumbleweed
Kernel: 6.14.0-rc6-1
KDE Plasma v: 6.3.3
AMD Radeon R5 / Realtek RTL8723BE
Realtek Bluetooth
Storage Hitachi : 931.51 GiB / MeM : 16 GiB
* LMDE 5 / Kernel 6.2.12-xanmod1 / Cinnamon 5.6
Did

Re: PHP : Comment activer extension GD ?

Message par Did »

Oui, merci Yoman.
Mais c'est ce que j'ai fait déjà hier, en faisant de la logithèque.
Et même pour être sûr de faire "proprement" les choses, j'ai même d'abord désinstallé le paquet php8.1-gd, puis j'ai installé le paquet php-gd qui apparaissait dans la fenêtre de la logithèque, et là, l'installation m'a intégré directement le paquet 8.1 en plus.
En regardant ensuite dans la fenêtre de la logithèque, les 2 paquets sont cochés comme étant installés.

Mais ça ne change pas la réponse : image toujours pas affichée.

Avec un fichier phpinfo(), le GD n'apparaît pas.
Je ne vois pas "GD Support enabled" ou "GD Version..." .
La seule partie qui apparaît, c'est une ligne "GD imaging " avec les "authors" de nommés.
Avatar du membre
yoman
Messages : 75
Enregistré le : lun. 20 févr. 2023 21:21

Re: PHP : Comment activer extension GD ?

Message par yoman »

Re

Que te donne la commande :

Code : Tout sélectionner

php8 -m | grep gd

Code : Tout sélectionner

php -m | grep gd
tu as bien une réponse : gd

Si c'est présent, tu peux l'activer avec :

Code : Tout sélectionner

phpenmod
petites questions :
  • après tes installations de paquets tu relance bien Apache2

Code : Tout sélectionner

sudo systemctl restart apache2
  • vérifie si tu as libgd-dev
pas simple , ton problème.... (sur opensuse je dois faire un lien symbolique pour activer les modules avec phpenmod)

Comme je suis aussi sur LMDE, je peux faire quelques tests , mais LMDE, est un peu capricieuse, c'est du Débian , je ne tricote pas trop avec...
Modifié en dernier par yoman le dim. 23 avr. 2023 18:27, modifié 1 fois.
HP Pavilion 17
Opensuse Tumbleweed
Kernel: 6.14.0-rc6-1
KDE Plasma v: 6.3.3
AMD Radeon R5 / Realtek RTL8723BE
Realtek Bluetooth
Storage Hitachi : 931.51 GiB / MeM : 16 GiB
* LMDE 5 / Kernel 6.2.12-xanmod1 / Cinnamon 5.6
Did

Re: PHP : Comment activer extension GD ?

Message par Did »

Bonjour à vous et merci,
Que te donne la commande :
php8.1 -m | grep gd
tu as bien une réponse : gd
(j'ai modifié la commande en mettant php8.1) Oui, gd en rouge.
petite question après tes installations de paquets tu relance bien Apache2
Oui, et de toute façon, pc éteint et rallumé depuis hier.
dpkg -l | grep php[0-9]| grep ^ii | cut -c5-10 | uniq
libapa
php8.1
Et aussi que te retourne
php -i | grep ‘GD’
Rien.

et enfin :
aptitude search php | grep gd

Code : Tout sélectionner

i  php-gd - GD module for PHP [default]
v  php-gd:i386 - 
i A php8.1-gd - GD module for PHP
p  php8.1-gd:i386 - GD module for PHP

Did

Re: PHP : Comment activer extension GD ?

Message par Did »

Alors que si tu n'en as qu'une version de php d'installée, ça devrait passer et retourner ta GD. Voir si tu coté d'alternative-update, la config est bonne et que la version 8.1 est bien inscrite comme default

sudo update-alternatives --list php
Réponse du terminal :

Code : Tout sélectionner

/usr/bin/php8.1
Verrouillé