Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/09/2019, à 19:19

hugolino

[Résolu] Apache2/PHP7.2 extensions impossibles à charger

Salut,

J'ai eu développé un petit site perso en PHP (en 2007/2008). C'était juste pour voir ce que c'était, je m'étais par exemple amusé à écrire des graphes de charge machine, ou à récupérer les données d'un formulaire pour effectuer des calculs. Rien de bien sérieux.

J'ai toujours gardé une copie locale de ce site qui marchait plutôt bien.

Je viens d'installer phpmyadmin pour m'intéresser à la gestion de bases MySQL et là http://127.0.0.1/phpmyadmin affiche "phpMyAdmin - Error The mbstring extension is missing. Please check your PHP configuration." et là, en fouillant la config, je m'aperçois que j'ai DEUX versions de PHP installées : la 7.0 et la 7.2.

Je désinstalle la 7.0 et me retrouve avec :
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2019-08-26T13:41:23

et pour PHP, les paquets:

dpkg -l | grep php | cut -b -100
ii  libapache2-mod-php                            1:7.2+60ubuntu1                                   
ii  libapache2-mod-php7.2                         7.2.19-0ubuntu0.18.04.2                           
ii  php                                           1:7.2+60ubuntu1                                   
ii  php-bz2                                       1:7.2+60ubuntu1                                   
ii  php-cli                                       1:7.2+60ubuntu1                                   
ii  php-common                                    1:60ubuntu1                                       
ii  php-curl                                      1:7.2+60ubuntu1                                   
ii  php-gd                                        1:7.2+60ubuntu1                                   
ii  php-gettext                                   1.0.12-0.1                                        
ii  php-mbstring                                  1:7.2+60ubuntu1                                   
ii  php-mysql                                     1:7.2+60ubuntu1                                   
ii  php-pear                                      1:1.10.5+submodules+notgz-1ubuntu1.18.04.1        
ii  php-php-gettext                               1.0.12-0.1                                        
ii  php-phpseclib                                 2.0.9-1                                           
ii  php-tcpdf                                     6.2.13+dfsg-1ubuntu1                              
ii  php-xml                                       1:7.2+60ubuntu1                                   
ii  php-zip                                       1:7.2+60ubuntu1                                   
ii  php7.2                                        7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-bz2                                    7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-cli                                    7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-common                                 7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-curl                                   7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-gd                                     7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-json                                   7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-mbstring                               7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-mysql                                  7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-opcache                                7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-readline                               7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-xml                                    7.2.19-0ubuntu0.18.04.2                           
ii  php7.2-zip                                    7.2.19-0ubuntu0.18.04.2                           
ii  phpmyadmin                                    4:4.6.6-5                                         
ii  phpsysinfo                                    3.2.5-3ubuntu1        

Sur mon site j'utilisais l'extension php-gd pour fabriquer des images représentant la charge machine au cours des dernières 24 heures : ça ne marche plus : "PHP Fatal error:  Uncaught Error: Call to undefined function imagecreatetruecolor() in /var/www/server-stats/load-stats-image.php:24"

L'extension php-gd (ou php7.2-gd) n'est plus active comme je peux le vérifier avec la page qui appelle phpinfo()
A fortiori, l'extension mbstring réclamée par phpmyadmin n'est pas non plus chargée

J'ai donc ouvert le fichier /etc/php/7.2/apache2/php.ini pour vérifier la valeur de la directive 'extension_dir' : elle n'était plus égale qu'à "./"...

J'ai donc écrit :
extension_dir = "./:/usr/lib/php/20170718/:/etc/php/7.2/mods-available/"
pensant me blinder.
le répertoire /usr/lib/php/20170718/ contient pourtant:

total 9092
  24 bz2.so         64 ftp.so        256 mysqlnd.so      16 shmop.so        32 wddx.so
  32 calendar.so   108 gd.so         436 opcache.so      60 simplexml.so    32 xmlreader.so
  16 ctype.so       16 gettext.so     28 pdo_mysql.so    92 sockets.so      48 xml.so
  92 curl.so        44 iconv.so      116 pdo.so          20 sysvmsg.so      48 xmlwriter.so
 172 dom.so         44 json.so       272 phar.so         12 sysvsem.so      32 xsl.so
  88 exif.so      1648 mbstring.so    36 posix.so        16 sysvshm.so      64 zip.so
4940 fileinfo.so   136 mysqli.so      32 readline.so     20 tokenizer.so

J'ai bien évidemment décommenté les lignes concernant gd et mdstring dans le php.ini :

 ;extension=bz2
 ;extension=curl
 extension=fileinfo
 extension=gd2
 extension=gettext
 ;extension=gmp
 ;extension=intl
 ;extension=imap
 ;extension=interbase
 ;extension=ldap
 extension=mbstring
 extension=exif      ; Must be after mbstring as it depends on it
 extension=mysqli
 ;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
 ;extension=odbc
 ;extension=openssl
 ;extension=pdo_firebird
 ;extension=pdo_mysql
 ;extension=pdo_oci
 ;extension=pdo_odbc
 ;extension=pdo_pgsql
 ;extension=pdo_sqlite
 ;extension=pgsql
 ;extension=shmop

J'ai bien évidemment redémarré Apache2, mais rien n'y fait, ces put$%ns d'extensions ne se chargent pas.
(J'ai aussi essayé sans mettre de "/" à la fin des chemins et des tas d'autres trucs inavouables...)

Pourtant phpinfo() montre:

Additional .ini files parsed 	/etc/php/7.2/apache2/conf.d/10-mysqlnd.ini, /etc/php/7.2/apache2/conf.d/10-opcache.ini, /etc/php/7.2/apache2/conf.d/10-pdo.ini, /etc/php/7.2/apache2/conf.d/15-xml.ini, /etc/php/7.2/apache2/conf.d/20-bz2.ini, /etc/php/7.2/apache2/conf.d/20-calendar.ini, /etc/php/7.2/apache2/conf.d/20-ctype.ini, /etc/php/7.2/apache2/conf.d/20-curl.ini, /etc/php/7.2/apache2/conf.d/20-dom.ini, /etc/php/7.2/apache2/conf.d/20-exif.ini, /etc/php/7.2/apache2/conf.d/20-fileinfo.ini, /etc/php/7.2/apache2/conf.d/20-ftp.ini, /etc/php/7.2/apache2/conf.d/20-gd.ini, /etc/php/7.2/apache2/conf.d/20-gettext.ini, /etc/php/7.2/apache2/conf.d/20-iconv.ini, /etc/php/7.2/apache2/conf.d/20-json.ini, /etc/php/7.2/apache2/conf.d/20-mbstring.ini, /etc/php/7.2/apache2/conf.d/20-mysqli.ini, /etc/php/7.2/apache2/conf.d/20-pdo_mysql.ini, /etc/php/7.2/apache2/conf.d/20-phar.ini, /etc/php/7.2/apache2/conf.d/20-posix.ini, /etc/php/7.2/apache2/conf.d/20-readline.ini, /etc/php/7.2/apache2/conf.d/20-shmop.ini, /etc/php/7.2/apache2/conf.d/20-simplexml.ini, /etc/php/7.2/apache2/conf.d/20-sockets.ini, /etc/php/7.2/apache2/conf.d/20-sysvmsg.ini, /etc/php/7.2/apache2/conf.d/20-sysvsem.ini, /etc/php/7.2/apache2/conf.d/20-sysvshm.ini, /etc/php/7.2/apache2/conf.d/20-tokenizer.ini, /etc/php/7.2/apache2/conf.d/20-wddx.ini, /etc/php/7.2/apache2/conf.d/20-xmlreader.ini, /etc/php/7.2/apache2/conf.d/20-xmlwriter.ini, /etc/php/7.2/apache2/conf.d/20-xsl.ini, /etc/php/7.2/apache2/conf.d/20-zip.ini 

J'ai le sentiment pénible que je dois commettre une erreur toute bête, mais depuis deux jours de googlisation intensive, je sèche lamentablement ;-(

Merci de votre aide.

Dernière modification par hugolino (Le 16/09/2019, à 21:17)

Hors ligne

#2 Le 16/09/2019, à 20:07

krodelabestiole

Re : [Résolu] Apache2/PHP7.2 extensions impossibles à charger

je te conseille la lecture du 4.3 Conflits potentiels entre plusieurs versions de PHP :
https://doc.ubuntu-fr.org/php#conflits_ … ons_de_php

en gros si ton serveur ne sert à rien d'autre je te conseille de virer tout ce qui concerne PHP, y compris les fichiers de config et PPAs externes, et de tout réinstaller.
tu ne devrais pas avoir besoin de modifier manuellement des fichiers pour installer une extension, donc autant repartir sur un truc propre..

https://doc.ubuntu-fr.org/php#modules

Hors ligne

#3 Le 16/09/2019, à 20:31

hugolino

Re : [Résolu] Apache2/PHP7.2 extensions impossibles à charger

0K,

# apt list \*php\* --installed
En train de lister... Fait
libapache2-mod-php/bionic,bionic,now 1:7.2+60ubuntu1 all  [installé]
libapache2-mod-php7.2/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé]
php/bionic,bionic,now 1:7.2+60ubuntu1 all  [installé, automatique]
php-bz2/bionic,bionic,now 1:7.2+60ubuntu1 all  [installé, automatique]
php-cli/bionic,bionic,now 1:7.2+60ubuntu1 all  [installé]
php-common/bionic,bionic,now 1:60ubuntu1 all  [installé, automatique]
php-curl/bionic,bionic,now 1:7.2+60ubuntu1 all  [installé, automatique]
php-gd/bionic,bionic,now 1:7.2+60ubuntu1 all  [installé]
php-gettext/bionic,bionic,now 1.0.12-0.1 all  [installé]
php-mbstring/bionic,bionic,now 1:7.2+60ubuntu1 all  [installé]
php-mysql/bionic,bionic,now 1:7.2+60ubuntu1 all  [installé, automatique]
php-pear/bionic-updates,bionic-updates,bionic-security,bionic-security,now 1:1.10.5+submodules+notgz-1ubuntu1.18.04.1 all  [installé, automatique]
php-php-gettext/bionic,bionic,now 1.0.12-0.1 all  [installé, automatique]
php-phpseclib/bionic,bionic,now 2.0.9-1 all  [installé, automatique]
php-tcpdf/bionic,bionic,now 6.2.13+dfsg-1ubuntu1 all  [installé, automatique]
php-xml/bionic,bionic,now 1:7.2+60ubuntu1 all  [installé]
php-zip/bionic,bionic,now 1:7.2+60ubuntu1 all  [installé, automatique]
php7.2/bionic-updates,bionic-updates,bionic-security,bionic-security,now 7.2.19-0ubuntu0.18.04.2 all  [installé]
php7.2-bz2/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé, automatique]
php7.2-cli/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé]
php7.2-common/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé, automatique]
php7.2-curl/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé, automatique]
php7.2-gd/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé]
php7.2-json/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé]
php7.2-mbstring/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé]
php7.2-mysql/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé, automatique]
php7.2-opcache/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé]
php7.2-readline/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé]
php7.2-xml/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé]
php7.2-zip/bionic-updates,bionic-security,now 7.2.19-0ubuntu0.18.04.2 amd64  [installé, automatique]
phpmyadmin/bionic,bionic,now 4:4.6.6-5 all  [installé]
phpsysinfo/bionic,bionic,now 3.2.5-3ubuntu1 all  [installé]

Je vire ces 32 paquets :

# apt-get remove --purge libapache2-mod-php libapache2-mod-php7.2 php php-bz2 php-cli php-common php-curl php-gd php-gettext php-mbstring php-mysql php-pear php-php-gettext php-phpseclib php-tcpdf php-xml php-zip php7.2 php7.2-bz2 php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-readline php7.2-xml php7.2-zip phpmyadmin phpsysinfo
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  dbconfig-common dbconfig-mysql default-mysql-client
Veuillez utiliser « apt autoremove » pour les supprimer.
Les paquets suivants seront ENLEVÉS :
  libapache2-mod-php* libapache2-mod-php7.2* php* php-bz2* php-cli* php-common* php-curl* php-gd*
  php-gettext* php-mbstring* php-mysql* php-pear* php-php-gettext* php-phpseclib* php-tcpdf* php-xml*
  php-zip* php7.2* php7.2-bz2* php7.2-cli* php7.2-common* php7.2-curl* php7.2-gd* php7.2-json*
  php7.2-mbstring* php7.2-mysql* php7.2-opcache* php7.2-readline* php7.2-xml* php7.2-zip* phpmyadmin*
  phpsysinfo*
0 mis à jour, 0 nouvellement installés, 32 à enlever et 0 non mis à jour.
Après cette opération, 72,5 Mo d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n] 

J'ai eu les avertissements classiques, notamment :

dpkg: avertissement: lors de la suppression de php-common, le répertoire « /var/lib/php/modules » n'était pas vide, donc il n'a pas été supprimé

et en effet:

# l -R /var/lib/php/modules/*
/var/lib/php/modules/7.0:
total 12
4 apache2  4 cli  4 registry

/var/lib/php/modules/7.0/apache2:
total 8
4 disabled_by_maint  4 enabled_by_maint

/var/lib/php/modules/7.0/apache2/disabled_by_maint:
total 0
0 dom  0 mbstring  0 simplexml  0 wddx  0 xml  0 xmlreader  0 xmlwriter  0 xsl

/var/lib/php/modules/7.0/apache2/enabled_by_maint:
total 0
0 calendar  0 exif      0 ftp  0 gettext  0 json     0 pdo   0 posix     0 shmop    0 sysvmsg  0 sysvshm
0 ctype     0 fileinfo  0 gd   0 iconv    0 opcache  0 phar  0 readline  0 sockets  0 sysvsem  0 tokenizer

/var/lib/php/modules/7.0/cli:
total 8
4 disabled_by_maint  4 enabled_by_maint

/var/lib/php/modules/7.0/cli/disabled_by_maint:
total 0
0 dom  0 mbstring  0 simplexml  0 wddx  0 xml  0 xmlreader  0 xmlwriter  0 xsl

/var/lib/php/modules/7.0/cli/enabled_by_maint:
total 0
0 calendar  0 exif      0 ftp  0 gettext  0 json     0 pdo   0 posix     0 shmop    0 sysvmsg  0 sysvshm
0 ctype     0 fileinfo  0 gd   0 iconv    0 opcache  0 phar  0 readline  0 sockets  0 sysvsem  0 tokenizer

/var/lib/php/modules/7.0/registry:
total 0

/var/lib/php/modules/7.2:
total 12
4 apache2  4 cli  4 registry

/var/lib/php/modules/7.2/apache2:
total 8
4 enabled_by_admin  4 enabled_by_maint

/var/lib/php/modules/7.2/apache2/enabled_by_admin:
total 0
0 mbstring

/var/lib/php/modules/7.2/apache2/enabled_by_maint:
total 0
0 bz2       0 dom       0 gd       0 mysqli   0 pdo_mysql  0 shmop      0 sysvsem    0 xml        0 zip
0 calendar  0 exif      0 gettext  0 mysqlnd  0 phar       0 simplexml  0 sysvshm    0 xmlreader
0 ctype     0 fileinfo  0 iconv    0 opcache  0 posix      0 sockets    0 tokenizer  0 xmlwriter
0 curl      0 ftp       0 json     0 pdo      0 readline   0 sysvmsg    0 wddx       0 xsl

/var/lib/php/modules/7.2/cli:
total 12
4 disabled_by_maint  4 enabled_by_admin  4 enabled_by_maint

/var/lib/php/modules/7.2/cli/disabled_by_maint:
total 0
0 bz2  0 mbstring  0 zip

/var/lib/php/modules/7.2/cli/enabled_by_admin:
total 0

/var/lib/php/modules/7.2/cli/enabled_by_maint:
total 0
0 calendar  0 exif      0 gettext  0 mysqlnd    0 phar      0 simplexml  0 sysvshm    0 xmlreader
0 ctype     0 fileinfo  0 iconv    0 opcache    0 posix     0 sockets    0 tokenizer  0 xmlwriter
0 curl      0 ftp       0 json     0 pdo        0 readline  0 sysvmsg    0 wddx       0 xsl
0 dom       0 gd        0 mysqli   0 pdo_mysql  0 shmop     0 sysvsem    0 xml

/var/lib/php/modules/7.2/registry:
total 0

Pas de sentiments :

# rm -rf /var/lib/php/modules/

Redémarrage du serveur Apache2:

# service apache2 stop
# service apache2 start

Et je peux vérifier que les menus de mon site, gérés par du code PHP, ont disparus.

Réinstallation :

# apt-get install libapache2-mod-php php php-bz2 php-cli php-common php-curl php-gd php-gettext php-mbstring php-mysql php-pear php-php-gettext php-phpseclib php-tcpdf php-xml php-zip phpsysinfo

(les mêmes paquets que ceux que j'ai déinstallés SAUF ceux mentionnant "7.2" dans leur nom)

Ce qui donne:

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  dbconfig-common dbconfig-mysql default-mysql-client
Veuillez utiliser « apt autoremove » pour les supprimer.
Les paquets supplémentaires suivants seront installés : 
  libapache2-mod-php7.2 php7.2 php7.2-bz2 php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json
  php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-readline php7.2-xml php7.2-zip
Paquets suggérés :
  php-libsodium php-mcrypt php-gmp php-imagick
Les NOUVEAUX paquets suivants seront installés :
  libapache2-mod-php libapache2-mod-php7.2 php php-bz2 php-cli php-common php-curl php-gd php-gettext
  php-mbstring php-mysql php-pear php-php-gettext php-phpseclib php-tcpdf php-xml php-zip php7.2 php7.2-bz2
  php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-opcache
  php7.2-readline php7.2-xml php7.2-zip phpsysinfo
0 mis à jour, 31 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 13,5 Mo dans les archives.
Après cette opération, 47,5 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n]

Dernière modification par hugolino (Le 16/09/2019, à 20:49)

Hors ligne

#4 Le 16/09/2019, à 20:48

krodelabestiole

Re : [Résolu] Apache2/PHP7.2 extensions impossibles à charger

ouaipe même

sudo rm -rf /var/lib/php /etc/php

il seront recréés à la réinstallation

Hors ligne

#5 Le 16/09/2019, à 21:12

hugolino

Re : [Résolu] Apache2/PHP7.2 extensions impossibles à charger

Je rajoute juste, au fichier '/etc/php/7.2/apache2/php.ini' le chemin vers mes fichiers de menus dans la directive include_path :

include_path = ".:/var/www/menus:/var/www/php-files"

de manière que les menus de mon sites retombent en marche.

Rhâââ Lovely !!! Mes images de charge machine sont correctement dessinées par php-gd !

Par contre, je ne comprends pas pourquoi, dans le fichier 'fichier /etc/php/7.2/apache2/php.ini' la directive 'extension_dir' ne contient que

; extension_dir = "./"

(en plus, elle est commentée)

et les directives qui appellent les différentes extensions sont toutes commentées:

;extension=bz2
;extension=curl
;extension=fileinfo
;extension=gd2
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
;extension=mbstring
;extension=exif      ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
;extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
;extension=pdo_sqlite
;extension=pgsql
;extension=shmop

Pourtant, ma page 'phpinfo' affiche maintenant les extensions dont j'ai besoin pour phpmyadmin (mbstring, mysql*, etc.)

Bref, je ne comprends où sont configurées les extensions. c'est à dire que je ne sais pas pourquoi ça marche, mais ça à l'air de marcher.

Je m'en vais installer phpmyadmin et faire joujou.

Merci à toi...

Reste à marquer ce sujet en résolu.

Dernière modification par hugolino (Le 16/09/2019, à 21:15)

Hors ligne

#6 Le 16/09/2019, à 22:07

hugolino

Re : [Résolu] Apache2/PHP7.2 extensions impossibles à charger

Bon...

Ça r0><e sa mère : phpmyadmin installed and roulaizing ze world

En fait, le but c'était ça : installer phpmyadmin (à fins pédagogiques : suis prof).

Je n'hésiterai pas à solliciter les geeks du forums en cas d'embrouille.

Mille mercis à krodelabestiole pour sa réactivité !!

Dernière modification par hugolino (Le 17/09/2019, à 21:16)

Hors ligne