Bonjour
Sur mon serveur il y a un message d'erreur avec phpmyadmin :
> phpMyAdmin - Error The mbstring extension is missing. Please check your PHP configuration.
Or, il y a deux versions de php7 :
- cli : Path => /etc/php/7.2/cli
- web : Path => /etc/php/7.0/apache2
Et il n'y a pas de module mbstring pour php/7.0 (avec ubuntu 18)
Donc il faut mettre à jour ce php d'apache2
Comment faire (sans risquer de perturber les CMS qui sont sur le serveurs) ?
Merci d'avance ! JLC
Il faudrait en savoir un peu plus sur la manière dont a été installé le serveur (c'est une installation en un clic avec panel d'admin ?), mais a priori l'installation de l'extension mbstring de PHP se fait assez facilement sur Ubuntu, un petit "apt-get install phpmacintruc-mbstring" devrait suffire.
Bonjour Nico
Lorsque je me logue en ssh, j'obtiens (c'est assez marrant) :
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.9.78-xxxx-std-ipv6-64 x86_64)
blabla
New release '20.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Ubuntu 16.04.2 LTS
Linux ksxxxxx.kimsufi.com 4.9.78-xxxx-std-ipv6-64 #2 SMP Wed Jan 24 10:27:15 CET 2018 x86_64 x86_64 x86_64 GNU/Linux
Server : xxxxx
IPv4 : xxx.xxx.xxx.xxx
IPv6 : xx:xx:xx:xx:xx:xx
Hostname : ksxxxxx.kimsufi.com
Donc je résume : il a été monté initialement avec Ubuntu 16LTS puis upgradé en 18LTS et ils me proposent de l'upgrader en 20LTS, mais rien ne presse, upgrader pour le plaisir, je fais pas ça.
De plus mes CMS marchent très bien, le seul problème est que depuis le passage de 16 à 18, phpmyadmin ne fonctionne plus. Mais il urgent de ne pas se précipiter (si je veux toucher aux bases, la ligne de commande me convient).
Pour votre idée, j'avais déjà fait ça, mais ça ne donne pas grand chose :
> $ sudo apt-get install php-mbstring
> php-mbstring is already the most recent version (1: 7.2 + 60ubuntu1).
Mais peut-être… une autre idée ?
JLC
Bonjour,
si le problème est juste phpmyadmin, la solution de contournement est d'utiliser adminer : https://www.adminer.org/
Cordialement, janus57
- cli : Path => /etc/php/7.2/cli
- web : Path => /etc/php/7.0/apache2
Visiblement, il y a plusieurs versions différentes de PHP installées sur la machine. Il faudrait précisément savoir comment cela a été fait, mais si ça se trouve il vous manque simplement un paquet du genre php7.0-mbstring. Ceci est une information au doigt mouillé, sous réserve de vérifications sur la manière dont PHP a été installé sur le serveur. Je commencerais personnellement par fouiller le sources.list et par...
`dpkg -l | grep php
dpkg -l | grep mbstring`
... pour avoir un début d'idée sur la question.
Merci beaucoup, je ne connaissais pas (et le forum francophone de Ubuntu n'en parle pas, hormis quelques allusions). Je vais l'installer pour voir.
En attendant Phpmyadmin ne marche pas… et c'est très bien pour la sécurité du serveur). Tcho
JL
Voila, voila
(j'avais déjà regardé, c'est pas triste) :
Pour le premier :
> dpkg -l | grep php
> ii libapache2-mod-php 1:7.2+60ubuntu1 all server-side, HTML-embedded scripting language (Apache 2 module) (default)
> ii libapache2-mod-php7.0 7.0.33-0ubuntu0.16.04.15 amd64 server-side, HTML-embedded scripting language (Apache 2 module)
> ii libapache2-mod-php7.2 7.2.24-0ubuntu0.18.04.7 amd64 server-side, HTML-embedded scripting language (Apache 2 module)
> ii php-bz2 1:7.2+60ubuntu1 all bzip2 module for PHP [default]
> ii php-common 1:60ubuntu1 all Common files for PHP packages
> ii php-gettext 1.0.12-0.1 all transitional dummy package for php-php-gettext
> ii php-imagick 3.4.3~rc2-2ubuntu4.1 amd64 Provides a wrapper to the ImageMagick library
> ii php-mbstring 1:7.2+60ubuntu1 all MBSTRING module for PHP [default]
> ii php-memcache 3.0.9~20160311.4991c2f-5build2 amd64 memcache extension module for PHP
> ii php-pear 1:1.10.5+submodules+notgz-1ubuntu1.18.04.2 all PEAR Base System
> ii php-php-gettext 1.0.12-0.1 all read gettext MO files directly, without requiring anything other than PHP
> ii php-phpseclib 2.0.9-1 all implementations of an arbitrary-precision integer arithmetic library
> ii php-tcpdf 6.2.13+dfsg-1ubuntu1 all PHP class for generating PDF files on-the-fly
> ii php-xml 1:7.2+60ubuntu1 all DOM, SimpleXML, WDDX, XML, and XSL module for PHP [default]
> ii php7.0 7.0.33-0ubuntu0.16.04.15 all server-side, HTML-embedded scripting language (metapackage)
> ii php7.0-cli 7.0.33-0ubuntu0.16.04.15 amd64 command-line interpreter for the PHP scripting language
> ii php7.0-common 7.0.33-0ubuntu0.16.04.15 amd64 documentation, examples and common module for PHP
> rc php7.0-curl 7.0.33-0ubuntu0.16.04.15 amd64 CURL module for PHP
> rc php7.0-gd 7.0.33-0ubuntu0.16.04.15 amd64 GD module for PHP
> rc php7.0-imap 7.0.33-0ubuntu0.16.04.15 amd64 IMAP module for PHP
> rc php7.0-intl 7.0.33-0ubuntu0.16.04.15 amd64 Internationalisation module for PHP
> ii php7.0-json 7.0.33-0ubuntu0.16.04.15 amd64 JSON module for PHP
> rc php7.0-mbstring 7.0.33-0ubuntu0.16.04.15 amd64 MBSTRING module for PHP
> rc php7.0-mcrypt 7.0.33-0ubuntu0.16.04.15 amd64 libmcrypt module for PHP
> ii php7.0-mysql 7.0.33-0ubuntu0.16.04.15 amd64 MySQL module for PHP
> ii php7.0-opcache 7.0.33-0ubuntu0.16.04.15 amd64 Zend OpCache module for PHP
> rc php7.0-pspell 7.0.33-0ubuntu0.16.04.15 amd64 pspell module for PHP
> ii php7.0-readline 7.0.33-0ubuntu0.16.04.15 amd64 readline module for PHP
> rc php7.0-recode 7.0.33-0ubuntu0.16.04.15 amd64 recode module for PHP
> rc php7.0-sqlite3 7.0.33-0ubuntu0.16.04.15 amd64 SQLite3 module for PHP
> rc php7.0-tidy 7.0.33-0ubuntu0.16.04.15 amd64 tidy module for PHP
> rc php7.0-xml 7.0.33-0ubuntu0.16.04.15 amd64 DOM, SimpleXML, WDDX, XML, and XSL module for PHP
> rc php7.0-xmlrpc 7.0.33-0ubuntu0.16.04.15 amd64 XMLRPC-EPI module for PHP
> rc php7.0-zip 7.0.33-0ubuntu0.16.04.15 amd64 Zip module for PHP
> ii php7.2-bz2 7.2.24-0ubuntu0.18.04.7 amd64 bzip2 module for PHP
> ii php7.2-cli 7.2.24-0ubuntu0.18.04.7 amd64 command-line interpreter for the PHP scripting language
> ii php7.2-common 7.2.24-0ubuntu0.18.04.7 amd64 documentation, examples and common module for PHP
> ii php7.2-json 7.2.24-0ubuntu0.18.04.7 amd64 JSON module for PHP
> ii php7.2-mbstring 7.2.24-0ubuntu0.18.04.7 amd64 MBSTRING module for PHP
> ii php7.2-opcache 7.2.24-0ubuntu0.18.04.7 amd64 Zend OpCache module for PHP
> ii php7.2-phpdbg 7.2.24-0ubuntu0.18.04.7 amd64 server-side, HTML-embedded scripting language (PHPDBG binary)
> ii php7.2-readline 7.2.24-0ubuntu0.18.04.7 amd64 readline module for PHP
> ii php7.2-xml 7.2.24-0ubuntu0.18.04.7 amd64 DOM, SimpleXML, WDDX, XML, and XSL module for PHP
> ii phpmyadmin 4:4.6.6-5ubuntu0.5 all MySQL web administration tool
Pour le second, c'est plus raisonnable :
> $ dpkg -l | grep mbstring
> ii php-mbstring 1:7.2+60ubuntu1 all MBSTRING module for PHP [default]
> rc php7.0-mbstring 7.0.33-0ubuntu0.16.04.15 amd64 MBSTRING module for PHP
> ii php7.2-mbstring 7.2.24-0ubuntu0.18.04.7 amd64 MBSTRING module for PHP
Amicalement, JL
Et aussi :
> deb http://ubuntu.mirrors.ovh.net/ubuntu/ bionic main restricted
> deb http://ubuntu.mirrors.ovh.net/ubuntu/ bionic-updates main restricted
> deb http://ubuntu.mirrors.ovh.net/ubuntu/ bionic universe
> deb http://ubuntu.mirrors.ovh.net/ubuntu/ bionic-updates universe
> deb http://ubuntu.mirrors.ovh.net/ubuntu/ bionic multiverse
> deb http://ubuntu.mirrors.ovh.net/ubuntu/ bionic-updates multiverse
> deb http://ubuntu.mirrors.ovh.net/ubuntu/ bionic-backports main restricted universe multiverse
> deb http://security.ubuntu.com/ubuntu bionic-security main restricted
> deb http://security.ubuntu.com/ubuntu bionic-security universe
> deb http://security.ubuntu.com/ubuntu bionic-security multiverse
@+
Le paquet php7.0-mbstring est marqué "rc", il a donc du être installé à un certain moment et puis retiré par la suite. A vue de nez, je dirais qu'il suffit de le réinstaller pour corriger votre problème.
j'avais fait ça aussi, mais sans succès:
$ sudo a2enmod mbstring
ERROR: Module mbstring does not exist!
Donc j'avais fait :
$ sudo apt-get install php7.0-mbstring
No version of the php7.0-mbstring package is available, but it exists in the database. This usually means that the package is missing, has become obsolete, or is only available from another source.
E: The package "php7.0-mbstring" does not have a version that can be installed
Pas de chance, n'est-ce pas ? On laisse tomber ?
JLC
a2enmod
Ca c'est une commande servant à activer un module Apache, a priori rien à voir avec ce que vous cherchez à faire.
No version of the php7.0-mbstring package is available, but it exists in the database. This usually means that the package is missing, has become obsolete, or is only available from another source.
Je ne suis pas expert des dépôts et des mises à jour Ubuntu, je ne vais donc pas m'avancer plus que ça, mais si j'avais à parier, je dirais que la mise à jour majeure qui a été faite (Ubuntu 16 -> 18) a très probablement cherché à remplacer PHP 7.0 par PHP 7.2. A partir de là il y a plusieurs solutions. Vous pourriez par exemple jouer avec votre sources.list pour installer certains paquets bien spécifiques (mais cela demande à être paramétré finement pour ne pas mettre le bronx). Une autre manière de solutionner le problème, probablement plus simple et sure, serait d'exécuter les scripts de vos sites (y compris phpMyAdmin qui n'est jamais qu'un gros script PHP) avec PHP 7.2. Ceci est à paramétrer dans les VirtalHosts de votre serveur Apache.
Vous êtes bien aimable
JL
Bonjour la communauté
Je suis TOUJOURS au même point, avec une version 7.0 de php qui n'est pas du tout à jour.
Je relance ce sujet, car j'ai eu beaucoup de conseils, mais finalement, rien de précis.
Historique simplifié :
J'ai mis à jour mon kimsufi de la manière suivante :
> New release '18.04 LTS' available.
> Run 'do-release-upgrade' to upgrade to it.
Donc j'ai fait ça, tout c'est bien passé, mais en fait, pour OVH, je suis toujours en version Ubuntu 16.04.2 LTS !!! et le info.php donne :
> PHP Version 7.0.33-0ubuntu0.16.04.15
Comment régler ça ? Et en plus, dans le manager, OVH en est resté à la version 14 !
Une idée ? (je veux dire, un savoir faire précis ?) Amicalement, JLC
Je suis en cours d'apprentissage de Debian. J'ai trouvé les commandes intéressantes suivantes permettant de savoir les version php installées, et laquelle est active (pour apache2 et en mode de commande CLI) :<br />$ ls -lrt /etc/php<br />total 12<br />drwxr-xr-x 5 root root 4096 Mar 29 20:41 7.3<br />drwxr-xr-x 5 root root 4096 Apr 6 21:02 7.4<br />drwxr-xr-x 3 root root 4096 Apr 6 21:15 8.0<br /><br />$ ls -l /etc/apache2/mods-*/*php*<br />-rw-r--r-- 1 root root 855 Feb 13 17:31 /etc/apache2/mods-available/php7.3.conf<br />-rw-r--r-- 1 root root 102 Feb 13 17:31 /etc/apache2/mods-available/php7.3.load<br />-rw-r--r-- 1 root root 855 Mar 5 09:36 /etc/apache2/mods-available/php7.4.conf<br />-rw-r--r-- 1 root root 102 Mar 5 09:36 /etc/apache2/mods-available/php7.4.load<br />lrwxrwxrwx 1 root root 29 Apr 6 21:02 /etc/apache2/mods-enabled/php7.4.conf -> ../mods-available/php7.4.conf<br />lrwxrwxrwx 1 root root 29 Apr 6 21:02 /etc/apache2/mods-enabled/php7.4.load -> ../mods-available/php7.4.load<br /><br />$ update-alternatives --config php<br />There is only one alternative in link group php (providing /usr/bin/php): /usr/bin/php7.4<br />Nothing to configure.<br />
A comparer aussi avec la commande "php -v" et les résultats de phpinfo().
he bien, ça donne ça :
> $ ls -lrt /etc/php
> total 8
> drwxr-xr-x 5 root root 4096 févr. 17 2018 7.0
> drwxr-xr-x 6 root root 4096 sept. 17 2020 7.2
> $ ls -l /etc/apache2/mods-*/php
> -rw-r–r-- 1 root root 867 nov. 30 2017 /etc/apache2/mods-available/php7.0.conf
> -rw-r–r-- 1 root root 79 nov. 30 2017 /etc/apache2/mods-available/php7.0.load
> -rw-r–r-- 1 root root 855 mai 26 2020 /etc/apache2/mods-available/php7.2.conf
> -rw-r–r-- 1 root root 102 mai 26 2020 /etc/apache2/mods-available/php7.2.load
> lrwxrwxrwx 1 root root 29 sept. 17 2020 /etc/apache2/mods-enabled/php7.0.conf -> ../mods-available/php7.0.conf
> lrwxrwxrwx 1 root root 29 sept. 17 2020 /etc/apache2/mods-enabled/php7.0.load -> ../mods-available/php7.0.load
> lrwxrwxrwx 1 root root 29 sept. 17 2020 /etc/apache2/mods-enabled/php7.2.conf -> ../mods-available/php7.2.conf
> lrwxrwxrwx 1 root root 29 sept. 17 2020 /etc/apache2/mods-enabled/php7.2.load -> ../mods-available/php7.2.load
> $ update-alternatives --config php
> Il existe 2 choix pour l'alternative php (qui fournit /usr/bin/php).
> Sélection Chemin Priorité État
> ------------------------------------------------------------
> * 0 /usr/bin/php7.2 72 mode automatique
> 1 /usr/bin/php7.0 70 mode manuel
> 2 /usr/bin/php7.2 72 mode manuel
Je crois que c'est OVH qui ne veut pas d'ubuntu 18 sur mon kimsufi (sous prétexte d'un manque de mémoire ; or j'ai 2Go, ça doit suffire). Amicalement, JLC
L'affichage des commandes montre le problème et la solution. Tu as simultanément php 7.0 et 7.2 activés !
Si tu veux passer le PHP en 7.2 :
- Pour apache2, il faut désactiver le php 7.0:
a2dismod php7.0
- Pour la version en ligne de commmande (CLI), il faut faire la commande
"update-alternatives --config php"
et choisir php 7.2
Ensuite vérifier le tout:
$ ls -l /etc/apache2/mods-/php*
=> doit n'afficher que les liens symboliquess vers php7.2
$ update-alternatives --config php
Ne permet pas de choisir, seule version php7.2 disponible.
$ php -v
Doit afficher la version php7.2.
Teste aussi l'affichage de phpinfo() : doit indiquer php 7.2 (tout cela en rechargeant apache2: "systemctl reload apache2").
php 7.2 est obsolète, il faudrait passer à 7.3 au mieux à 7.4 (meilleur support dans la durée).
Une fois l'upgrade fait, refaire les tests comme précédemment pour confirmer la version active de php.
merci, je m'y mets
JLC
Allons y :
> $ sudo a2dismod php7.0
> Module php7.0 disabled.
> To activate the new configuration, you need to run:
> systemctl restart apache2
puis
> $ sudo update-alternatives --config php
> Il existe 2 choix pour l'alternative php (qui fournit /usr/bin/php).
> Sélection Chemin Priorité État
> ------------------------------------------------------------
> * 0 /usr/bin/php7.2 72 mode automatique
> 1 /usr/bin/php7.0 70 mode manuel
> 2 /usr/bin/php7.2 72 mode manuel
> Appuyez sur pour conserver la valeur par défaut[] ou choisissez le numéro sélectionné :2
> $ ls -l /etc/apache2/mods-/php*
> -rw-r–r-- 1 root root 867 nov. 30 2017 /etc/apache2/mods-available/php7.0.conf
> -rw-r–r-- 1 root root 79 nov. 30 2017 /etc/apache2/mods-available/php7.0.load
> -rw-r–r-- 1 root root 855 mai 26 2020 /etc/apache2/mods-available/php7.2.conf
> -rw-r–r-- 1 root root 102 mai 26 2020 /etc/apache2/mods-available/php7.2.load
> lrwxrwxrwx 1 root root 29 sept. 17 2020 /etc/apache2/mods-enabled/php7.2.conf -> ../mods-available/php7.2.conf
> lrwxrwxrwx 1 root root 29 sept. 17 2020 /etc/apache2/mods-enabled/php7.2.load -> ../mods-available/php7.2.load
> $ sudo update-alternatives --config php
> Il existe 2 choix pour l'alternative php (qui fournit /usr/bin/php).
> Sélection Chemin Priorité État
> ------------------------------------------------------------
> 0 /usr/bin/php7.2 72 mode automatique
> 1 /usr/bin/php7.0 70 mode manuel
> * 2 /usr/bin/php7.2 72 mode manuel
> Appuyez sur pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :0
enfin
> $ php -v
> PHP 7.2.24-0ubuntu0.18.04.7 (cli) (built: Oct 7 2020 15:24:25) ( NTS )
> Copyright (c) 1997-2018 The PHP Group
> Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
> with Zend OPcache v7.2.24-0ubuntu0.18.04.7, Copyright (c) 1999-2018, by Zend Technologies
mais info.php continue à donner
> PHP Version 7.0.33-0ubuntu0.16.04.15
et, plus grave :
> $ systemctl restart apache2
> Failed to restart apache2.service: The name org.freedesktop.PolicyKit1 was not provided by any .service files
> See system logs and 'systemctl status apache2.service' for details.
donc :
> $ sudo apt install policykit-1
> $ systemctl restart apache2
et info.php donne :
PHP Version 7.2.24-0ubuntu0.18.04.7
Donc j'ai fait un grand pas en avant (merci beaucoup)… en attendant que ça coince quelque part.
On verra bien.
Amicalement, JLC
Bonsoir
Ça n'a pas été long, mes sites wordpress ne marchent plus :
> Your PHP installation appears to be missing the MySQL extension which is required by WordPress.
Il semble que mysql ne soit pas installé dans PHP Version 7.2.24
???
JLC
Il te faudrait installer php7.2-mysql (dans ton phpinfo() actuel tu ne dois pas voir mysqli afiché):
- confirmer qu'il n'est pas installé
$ apt policy php7.2-mysql
- l'installer :
$ sudo apt-get install php7.2-myql
- relancer apache2
$ systemctl reload apache2
phpinfo() doit maintenant afficher mysqli comme extension.
Et ton Wordpress est OK maintenant ? ![]()