Installation php-5.6 / Debian 9

Eléphanteau du PHP | 28 Messages

15 oct. 2018, 10:01

Bonjour,

J'ai installé php5.6-fpm sur une Debian 9 pour un vieux site web, avec mysql et gd comme ça:

Code : Tout sélectionner

... cd /usr/local/src/php5.6-build/php-5.6.33 ./configure --prefix=/opt/php-5.6 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl=/opt/openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm --with-mysql --with-gd
Compilé et installé sans problème. Le site se connecte bien à Mysql après quelques adaptations et GD semble installé:

Code : Tout sélectionner

root@ns1:/var/www/webologix.com/web# /opt/php-5.6/bin/php -r "echo phpinfo();" | grep with-gd Configure Command => './configure' '--prefix=/opt/php-5.6' '--with-pdo-pgsql' '--with-zlib-dir' '--with-freetype-dir' '--enable-mbstring' '--with-libxml-dir=/usr' '--enable-soap' '--enable-calendar' '--with-curl' '--with-mcrypt' '--with-pgsql' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-zlib' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-pcntl' '--enable-mbregex' '--enable-exif' '--enable-bcmath' '--with-mhash' '--enable-zip' '--with-pcre-regex' '--with-pdo-mysql' '--with-mysqli' '--with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--with-openssl=/opt/openssl' '--with-fpm-user=www-data' '--with-fpm-group=www-data' '--with-libdir=/lib/x86_64-linux-gnu' '--enable-ftp' '--with-kerberos' '--with-gettext' '--with-xmlrpc' '--with-xsl' '--enable-opcache' '--enable-fpm' '--with-mysql' '--with-gd'
Mais le vieux site se plaint avec un message du genre:
Creating thumbnail from JPG, 600 x 800...
GD image library not installed!
Des idées ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7743 Messages

15 oct. 2018, 12:06

Là je dirai que tu as activé le support de GD dans PHP mais que tu ne l'as pas installé.

Code : Tout sélectionner

apt-get install php5-gd
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 28 Messages

15 oct. 2018, 17:21

Attention, je n'installe pas php5 comme interpréteur par défaut du système (il y a déjà php7.0) mais un interpréteur additionnel sur une plateforme multi PHP d'après le tuto https://www.howtoforge.com/tutorial/how ... ntu-16-04/

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7743 Messages

15 oct. 2018, 17:50

GD et PHP sont deux programmes différents.

Donc je repose ma question : As-tu installé GD ?
https://libgd.github.io
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 28 Messages

15 oct. 2018, 18:24

Non je n'ai pas installé GD pour php5 mais il est installé pour php7:

Code : Tout sélectionner

root@ns1:~# dpkg -l *gd* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=================-=============-=============-======================================= un gdb <none> <none> (no description available) un ifplugd <none> <none> (no description available) un libgd-tools <none> <none> (no description available) ii libgd3:amd64 2.2.4-2+deb9u amd64 GD Graphics Library ii libgdbm3:amd64 1.8.3-14 amd64 GNU dbm database routines (runtime vers un myspell-gd <none> <none> (no description available) un php-gd <none> <none> (no description available) ii php7.0-gd 7.0.30-0+deb9 amd64 GD module for PHP
Et je ne vois pas de GD pour php5.6:

Code : Tout sélectionner

root@ns1:~# dpkg -l *php5* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=================-=============-=============-======================================= rc libapache2-mod-ph 5.6.38-1+0~20 amd64 server-side, HTML-embedded scripting la un php5.6-calendar <none> <none> (no description available) rc php5.6-cli 5.6.38-1+0~20 amd64 command-line interpreter for the PHP sc rc php5.6-common 5.6.38-1+0~20 amd64 documentation, examples and common modu un php5.6-ctype <none> <none> (no description available) rc php5.6-curl 5.6.38-1+0~20 amd64 CURL module for PHP un php5.6-dom <none> <none> (no description available) un php5.6-exif <none> <none> (no description available) un php5.6-fileinfo <none> <none> (no description available) un php5.6-ftp <none> <none> (no description available) un php5.6-gettext <none> <none> (no description available) un php5.6-iconv <none> <none> (no description available) rc php5.6-json 5.6.38-1+0~20 amd64 JSON module for PHP rc php5.6-mbstring 5.6.38-1+0~20 amd64 MBSTRING module for PHP rc php5.6-mysql 5.6.38-1+0~20 amd64 MySQL module for PHP un php5.6-mysqli <none> <none> (no description available) un php5.6-mysqlnd <none> <none> (no description available) rc php5.6-opcache 5.6.38-1+0~20 amd64 Zend OpCache module for PHP un php5.6-pdo <none> <none> (no description available) un php5.6-pdo-mysql <none> <none> (no description available) un php5.6-phar <none> <none> (no description available) un php5.6-posix <none> <none> (no description available) rc php5.6-readline 5.6.38-1+0~20 amd64 readline module for PHP un php5.6-shmop <none> <none> (no description available) un php5.6-simplexml <none> <none> (no description available) un php5.6-sockets <none> <none> (no description available) un php5.6-sysvmsg <none> <none> (no description available) un php5.6-sysvsem <none> <none> (no description available) un php5.6-sysvshm <none> <none> (no description available) un php5.6-tokenizer <none> <none> (no description available) un php5.6-wddx <none> <none> (no description available) rc php5.6-xml 5.6.38-1+0~20 amd64 DOM, SimpleXML, WDDX, XML, and XSL modu un php5.6-xmlreader <none> <none> (no description available) un php5.6-xmlwriter <none> <none> (no description available) un php5.6-xsl <none> <none> (no description available)

Code : Tout sélectionner

root@ns1:~# apt-get install php5-gd Reading package lists... Done Building dependency tree Reading state information... Done Package php5-gd is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'php5-gd' has no installation candidate

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7743 Messages

15 oct. 2018, 23:49

Effectivement le paquet php5-gd n'est disponible que pour les Debian 8 et inférieure, or tu es sur une Debian 9 :
https://packages.debian.org/jessie/php5-gd


A priori, je pense que tu dois indiquer explicitement le répertoire où GD est installé sur ton serveur : --with-gd=DIR

En espérant qu'il n'y ait pas d'incompatibilités vu que tu essayes de faire tourner tout ça sur le même serveur.
Une autre approche qui est de plus en plus utilisée dans ton genre de cas est de passer par des containers Docker.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 28 Messages

16 oct. 2018, 08:24

Je ne comprends pas. Il y a un gd dans le php-5.3 que j'ai téléchargé:

Code : Tout sélectionner

locate gd.h /opt/php-5.6/include/php/ext/gd/libgd/gd.h /opt/php-5.6/include/php/ext/gd/php_gd.h /opt/php-7.1/include/php/ext/gd/libgd/gd.h /opt/php-7.1/include/php/ext/gd/php_gd.h /usr/local/src/php5.6-build/php-5.6.33/ext/gd/libgd/gd.h /usr/local/src/php5.6-build/php-5.6.33/ext/gd/php_gd.h /usr/local/src/php7.1-build/php-7.1.14/ext/gd/libgd/gd.h /usr/local/src/php7.1-build/php-7.1.14/ext/gd/php_gd.h root@ns1:/opt# ll /usr/local/src/php5.6-build/php-5.6.33/ext/gd total 700 -rw-r--r-- 1 svg svg 12158 Jan 2 2018 config.m4 -rw-r--r-- 1 svg svg 3529 Jan 2 2018 config.w32 -rw-r--r-- 1 svg svg 118 Jan 2 2018 CREDITS -rw-r--r-- 1 svg svg 147039 Jan 2 2018 gd.c -rw-r--r-- 1 svg svg 4995 Jan 2 2018 gdcache.c -rw-r--r-- 1 svg svg 2818 Jan 2 2018 gdcache.h -rw-r--r-- 1 svg svg 1102 Jan 2 2018 gd_compat.c -rw-r--r-- 1 svg svg 303 Jan 2 2018 gd_compat.h -rw-r--r-- 1 svg svg 6432 Jan 2 2018 gd_ctx.c -rw-r--r-- 1 svg svg 15665 Jan 2 2018 gd.dsp -rw-r--r-- 1 root root 304 Oct 14 11:48 gd.lo -rw-r--r-- 1 root root 465680 Oct 14 11:48 gd.o drwxr-xr-x 3 svg svg 4096 Oct 14 11:49 libgd -rw-r--r-- 1 svg svg 6268 Jan 2 2018 php_gd.h drwxr-xr-x 2 svg svg 20480 Jan 2 2018 tests
Ce n'est pas un GD complet compilé avec le php ?
Il faut indiquer un GD installé sur le serveur ? Comment le trouver ?

ViPHP
ViPHP | 5887 Messages

17 oct. 2018, 00:07

Bonjour,

De manière générale, pour installer un paquet qui n'est plus disponible sur la version courante de Debian, la solution la plus simple reste d'ajouter le dépôt de la version qui comprend le paquet (que ce soit en backporting ou en downgrade). Hors exceptions (c'est à dire les cas où le fonctionnement du système dépend de la version du paquet qu'on souhaite installer), cette solution fonctionne très bien et permet de faire cohabiter sans soucis plusieurs version.

Dans l'exemple de php5.6, de ce que je vois sur packages.debian.org, le paquet n'est pas packagé pour stretch, mais l'est jessie. Je recommanderais donc de :
* ajouter les dépôts jessie dans le source.list (en plus des dépôts stretch):

Code : Tout sélectionner

deb http://ftp.fr.debian.org/debian/ jessie main contrib non-free deb-src http://ftp.fr.debian.org/debian/ jessie main contrib non-free # Security deb http://security.debian.org/ jessie/updates main contrib non-free deb-src http://security.debian.org/ jessie/updates main contrib non-free # Backports deb http://ftp.debian.org/debian/ jessie-backports main contrib non-free
* Puis mettre à jour les listes de paquet et installer les paquets php5.6

Normalement php5.6-gd est disponible pour jessie. Les fonctions gd devraient donc fonctionner sans problème, et sans avoir à compiler php ou à ajouter quelque option que ce soit.

Cordialement

Eléphanteau du PHP | 28 Messages

17 oct. 2018, 10:27

J'ai donc ajouté le sources-list de Jessie, puis update. Mais c'est pas mieux:

Code : Tout sélectionner

root@ns1:~# apt-get update Ign:1 http://debian.mirrors.ovh.net/debian stretch InRelease Get:2 http://debian.mirrors.ovh.net/debian stretch-updates InRelease [91.0 kB] Get:3 http://debian.mirrors.ovh.net/debian stretch Release Hit:4 http://security.debian.org/debian-security stretch/updates InRelease Get:5 http://security.debian.org jessie/updates InRelease [44.9 kB] Get:6 http://ftp.debian.org/debian jessie-backports InRelease [166 kB] Get:7 https://last-public-ovh-kernel.snap.mirrors.ovh.net/debian ovhkernel InRelease [4,924 B] Ign:8 http://ftp.fr.debian.org/debian jessie InRelease Get:9 http://ftp.fr.debian.org/debian jessie Release [148 kB] Get:10 http://ftp.fr.debian.org/debian jessie Release.gpg [2,420 B] Get:12 http://security.debian.org jessie/updates/main Sources [260 kB] Get:13 http://security.debian.org jessie/updates/contrib Sources [1,439 B] Get:14 http://security.debian.org jessie/updates/non-free Sources [766 B] Get:15 http://security.debian.org jessie/updates/main amd64 Packages [540 kB] Get:16 http://security.debian.org jessie/updates/main Translation-en [292 kB] Get:17 http://security.debian.org jessie/updates/contrib amd64 Packages [2,506 B] Get:18 http://security.debian.org jessie/updates/contrib Translation-en [1,211 B] Get:19 http://security.debian.org jessie/updates/non-free amd64 Packages [562 B] Get:20 http://security.debian.org jessie/updates/non-free Translation-en [306 B] Get:21 http://ftp.debian.org/debian jessie-backports/main amd64 Packages [911 kB] Get:22 http://ftp.debian.org/debian jessie-backports/main Translation-en [628 kB] Get:23 http://ftp.debian.org/debian jessie-backports/contrib amd64 Packages [9,628 B] Get:24 http://ftp.debian.org/debian jessie-backports/contrib Translation-en [6,946 B] Get:25 http://ftp.debian.org/debian jessie-backports/non-free amd64 Packages [28.5 kB] Get:26 http://ftp.debian.org/debian jessie-backports/non-free Translation-en [30.2 kB] Get:27 http://ftp.fr.debian.org/debian jessie/non-free Sources [99.2 kB] Get:28 http://ftp.fr.debian.org/debian jessie/contrib Sources [50.4 kB] Get:29 http://ftp.fr.debian.org/debian jessie/main Sources [7,063 kB] Get:30 http://ftp.fr.debian.org/debian jessie/main amd64 Packages [6,818 kB] Get:31 http://ftp.fr.debian.org/debian jessie/main Translation-en [4,581 kB] Get:32 http://ftp.fr.debian.org/debian jessie/contrib amd64 Packages [49.8 kB] Get:33 http://ftp.fr.debian.org/debian jessie/contrib Translation-en [38.3 kB] Get:34 http://ftp.fr.debian.org/debian jessie/non-free amd64 Packages [83.2 kB] Get:35 http://ftp.fr.debian.org/debian jessie/non-free Translation-en [72.0 kB] Fetched 22.1 MB in 17s (1,300 kB/s) Reading package lists... Done root@ns1:~# apt-get install php-5.6-gd Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package php-5.6-gd E: Couldn't find any package by glob 'php-5.6-gd' E: Couldn't find any package by regex 'php-5.6-gd' root@ns1:~# dpkg -l *gd* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=================-=============-=============-======================================= un gdb <none> <none> (no description available) un ifplugd <none> <none> (no description available) un libgd-tools <none> <none> (no description available) ii libgd3:amd64 2.2.4-2+deb9u amd64 GD Graphics Library ii libgdbm3:amd64 1.8.3-14 amd64 GNU dbm database routines (runtime vers un myspell-gd <none> <none> (no description available) ii php-gd 1:7.0+49 all GD module for PHP [default] ii php7.0-gd 7.0.30-0+deb9 amd64 GD module for PHP
Mais pour ma compréhension personnelle, si gd n'est pas compilé dans php-5.6 avec --with-gd et qu'il faut faire un lien vers une installation locale, pourquoi est-ce que mysql marche alors que php5.6-mysql neest pas installé sur mon système ?
Pourquoi voit-on un gd.c et gd.o dans le ext/gd du php5.6 que j'ai téléchargé ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7743 Messages

17 oct. 2018, 10:41

Le nom du packet c'est php5-gd
https://packages.debian.org/fr/sid/php5-gd

Mais tu as raison, contrairement à MySQL qui n'est pas inclus par défaut dans PHP (et donc qu'il faut installer par ailleurs ce que tu as probablement fait pour que ça fonctionne), normalement une version de GD est packagée avec PHP.
La problématique est peut être (?) que tu as déjà une version de GD pour PHP7 et que ce n'est pas la même pour PHP5, et que lors de l'install de PHP5, il voit qu'une version de GD est déjà présente sur le système et donc n'installe pas la sienne.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 28 Messages

18 oct. 2018, 10:10

J'ai trouvé un moyen d'installer php5-gd :

Code : Tout sélectionner

root@ns1:~# dpkg -l php5-gd Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=================-=============-=============-======================================= ii php5-gd 5.6.38+dfsg-0 amd64 GD module for php5
Maintenant comment lier ce GD dans le configure avec le --with-gd= ? Autrement dit quel chemin dois je indiquer et comment le trouver ?

Eléphanteau du PHP | 28 Messages

18 oct. 2018, 16:07

J'ai trouvé le problème. En fait le configure était bon mais il fallait faire un clean du PHP avant de recompiler, sinon les objets restaient inchangés:

Code : Tout sélectionner

make clean make distclean
et installer les librairies jpeg:

Code : Tout sélectionner

apt-get install libjpeg-dev apt-get install libfreetype6-dev
Inutile d'installer php5-gd. GD est compilé dans le PHP5.6-fpm

Eléphanteau du PHP | 28 Messages

25 oct. 2018, 17:16

J'ai publié une petite récap ici:
https://webologix.com/fr/blog/php5.6-fp ... on-gd.html

Pour ceuw à qui ça peut servir