Php ne trouve pas des extensions pourtant installées

Bonjour,
Je souhaitais installer Mediawiki sur mon ordi avec Debian 12.4
Mais j’ai une erreur à l’installation, des extensions requises sont absentes : mbstring, xml et intl.
J’ai les 3 extensions avec un .ini dans /etc/php/8.3/mods-available/

J’ai une erreur avec ces 3 extensions quand je fais un php -v, exemple avec mbstring :

Unable to load dynamic library ‹ mbstring.so › (tried: /usr/lib/php/20220829/mbstring.so (/usr/lib/php/20220829/mbstring.so: cannot open shared object file: No such file or directory), /usr/lib/php/20220829/mbstring.so.so (/usr/lib/php/20220829/mbstring.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Apparemment, les fichiers .so ne sont pas dans /usr/lib/php/20220829

J’ai un dossier /usr/lib/php/20230831 dans lequel sont les fichiers avec l’extension .so, j’ai voulu les copier dans /usr/lib/php/20220829 mais ça fait une erreur :

PHP Warning:  PHP Startup: mbstring: Unable to initialize module
Module compiled with module API=20230831
PHP    compiled with module API=20220829
These options need to match
 in Unknown on line 0

J’ai désinstallé et réinstallé ces extensions sans succès.

Je vous remercie.

Edit : Résolu par Zargos, je n’avais pas activé le php dans apache.
Un grand merci à lui pour son aide ainsi qu’à Dindoun pour son aide et ses conseils

Bonjour,

On ne touche pas au répertoires /usr/lib d’une façon générale.
Si c’est le cas c’est une anomalie.

Tu es en Debian 12.4, pourquoi n’es-tu pas en Debian 12.9?

Tu es en PHP 8.4 alors que pour Debian 12.9 c’est PHP 8.2, pourquoi?

Sachant que MediaWiki n’exige pas de PHP 8.4 en aucune façon (il est installé chez moi en 8.2 et marche parfaitement bien).

Comment as-tu installé MediaWiki (qui est dans les dépots) et ton serveur Web?

1 J'aime

d’un point de vue général, quand on demande de l’aide on ne coupe pas les informations, car si on n’a pas compris le problème, l’explication est souvent dans les trucs coupés.
Ici le début de php -v nous intéressait

Chez moi les trois .so sont bien dans /usr/lib/php/20220829 ( aparthé : bizarre ce nom de dossier )

que donne dpkg -l |grep php.*-mbstring

pour le reste zargos a raison ( sauf qu’on vient de passer en 12.10 ) et que tu n’as rien à faire en 12.4, ni en php8.3sauf raison extraordinaire à expliciter

Je me suis mis en sudo pour copier et coller le fichier dans /usr/lib

Tu es en Debian 12.4, pourquoi n’es-tu pas en Debian 12.9?

J’ai déjà commis une erreur en voulant mettre Debian à jour quand j’étais avec Debian 9 et j’ai dû tout réinstaller !

Je ne savais pas que MediaWiki était dans les dépôts.
Ce n’est pas la première fois que je l’installe, je fais un lien symbolique dans /var/www/html vers le dossier où il est. J’y accède par le navigateur pour l’installer, ça a changé ?

Désolé d’avoir coupé les informations. le php -v en entier ci-dessous.

    PHP Warning:  PHP Startup: Unable to load dynamic library 'curl' (tried: /usr/lib/php/20220829/curl (/usr/lib/php/20220829/curl: cannot open shared object file: No such file or directory), /usr/lib/php/20220829/curl.so (/usr/lib/php/20220829/curl.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
    PHP Warning:  PHP Startup: Unable to load dynamic library 'intl' (tried: /usr/lib/php/20220829/intl (/usr/lib/php/20220829/intl: cannot open shared object file: No such file or directory), /usr/lib/php/20220829/intl.so (/usr/lib/php/20220829/intl.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
    PHP Warning:  PHP Startup: Unable to load dynamic library 'mbstring' (tried: /usr/lib/php/20220829/mbstring (/usr/lib/php/20220829/mbstring: cannot open shared object file: No such file or directory), /usr/lib/php/20220829/mbstring.so (/usr/lib/php/20220829/mbstring.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
    PHP Warning:  PHP Startup: Unable to load dynamic library 'xml.so' (tried: /usr/lib/php/20220829/xml.so (/usr/lib/php/20220829/xml.so: cannot open shared object file: No such file or directory), /usr/lib/php/20220829/xml.so.so (/usr/lib/php/20220829/xml.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
    PHP Warning:  PHP Startup: Unable to load dynamic library 'mbstring.so' (tried: /usr/lib/php/20220829/mbstring.so (/usr/lib/php/20220829/mbstring.so: cannot open shared object file: No such file or directory), /usr/lib/php/20220829/mbstring.so.so (/usr/lib/php/20220829/mbstring.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
    PHP 8.2.28 (cli) (built: Mar 13 2025 18:10:30) (NTS)
    Copyright (c) The PHP Group
    Zend Engine v4.2.28, Copyright (c) Zend Technologies
        with Zend OPcache v8.2.28, Copyright (c), by Zend Technologies

Le résultat de la commande dpkg -l |grep php.*-mbstring :

ii php-mbstring 2:8.3+95+0~20250309.55+debian12~1.gbp8a282b all MBSTRING module for PHP [default]
rc php7.0-mbstring 7.0.33-68+0~20230905.83+debian12~1.gbp571a08 amd64 MBSTRING module for PHP
rc php7.4-mbstring 1:7.4.33-8+0~20230904.88+debian12~1.gbp87c414 amd64 MBSTRING module for PHP
rc php8.2-mbstring 8.2.7-1~deb12u1 amd64 MBSTRING module for PHP
ii php8.3-mbstring 8.3.19-1+0~20250313.57+debian12~1.gbpe7e891 amd64 MBSTRING module for PHP

a priori les message d’erreur concerne la version de php 8.2 or mbstring est installé pour la version 8.3, les liens symbolique du .so ne pointent pas au bon endroit du coup …

C’est un peu le problème quand on mixe les version de paquets de php et de dépôts :wink: merci aux dépôts de Sury :wink:

r: the package was marked for removal
c: the configuration files are currently present in the system

Je préfère le retour d’un :

apt policy php8.*-mbstring

Tu utilises quelle version de php avec ton media wiki ?

Debian 9 vers 12 c’est trop d’écart pour une simple mise à jour. Une réinstallation est préférable.

C’est biçen de regarder :wink: c’est même indiqué sur le site MediaWiki d’ailleurs.

Jolie faille de sécurité. Ce n’est pas comme ça qu’il faut faire.
Si c’est à partir des sources dans ce cas mieux vaut les mettre directement dans /var/www/html.
Sinon les packages installent dans /var/lib/mediawiki.

Vu le temps entre Debian et Debian 12 oui, il y a des chances :slight_smile:

D’autant que tout est dans les dépôts debian.

Le résultat de la commande apt policy php8.*-mbstring

php8.4-mbstring:
Installé : (aucun)
Candidat : 8.4.5-1+0~20250313.25+debian12~1.gbp6d77b0
Table de version :
8.4.5-1+0~20250313.25+debian12~1.gbp6d77b0 500
500 https://packages.sury.org/php bookworm/main amd64 Packages
php8.3-mbstring:
Installé : 8.3.19-1+0~20250313.57+debian12~1.gbpe7e891
Candidat : 8.3.19-1+0~20250313.57+debian12~1.gbpe7e891
Table de version :
*** 8.3.19-1+0~20250313.57+debian12~1.gbpe7e891 500
500 https://packages.sury.org/php bookworm/main amd64 Packages
100 /var/lib/dpkg/status
php8.2-mbstring:
Installé : (aucun)
Candidat : 8.2.28-1+0~20250313.73+debian12~1.gbp0da9cd
Table de version :
8.2.28-1+0~20250313.73+debian12~1.gbp0da9cd 500
500 https://packages.sury.org/php bookworm/main amd64 Packages
8.2.28-1~deb12u1 500
500 http://security.debian.org/debian-security bookworm-security/main amd64 Packages
8.2.26-1~deb12u1 500
500 http://deb.debian.org/debian bookworm/main amd64 Packages
8.2.7-1~deb12u1 -1
100 /var/lib/dpkg/status
php8.1-mbstring:
Installé : (aucun)
Candidat : 8.1.32-1+0~20250313.71+debian12~1.gbpded0ce
Table de version :
8.1.32-1+0~20250313.71+debian12~1.gbpded0ce 500
500 https://packages.sury.org/php bookworm/main amd64 Packages
php8.0-mbstring:
Installé : (aucun)
Candidat : 1:8.0.30-13+0~20250313.73+debian12~1.gbpee4be4
Table de version :
1:8.0.30-13+0~20250313.73+debian12~1.gbpee4be4 500
500 https://packages.sury.org/php bookworm/main amd64 Packages

La version de php utilisée sur mon ordi est 8.2.28

À mes débuts avec Linux, il y a une quinzaine d’années, c’est une connaissance qui utilisait Linux depuis plus longtemps que moi qui m’a expliqué pour ces liens symboliques !
Merci pour l’avertissement.

Merci, je ferai comme cela maintenant.

En fait les liens symboliques il faut éviter d’en faire autant que possible. C’est un piège dans lequel on peut tomber facilement et se retrouver empêtrer. Les liens symboliques c’est bien entre zone de niveau de sécurité équivalent mais c’est une faille entre niveau de sécurité différents.

Malheureusement, ce n’est pas le cas sur mon système !

Je vais devoir faire un nettoyage sur mon pc.
J’ai 3 versions de php, je ne sais pas pourquoi !
Je vais supprimer php, mettre à niveau Debian, réinstaller php et les extensions qu’il me faut et installer MediaWiki proprement avec un apt.

plutot bon signe : ça veut dire qu’on sait d’où vient ton problème et qu’il va se régler tranquille

première question : as-tu besoin de sury ?

sauf que je voulais éviter dans un premier temps php-symfony-polyfill-mbstring et tous les autres ( mais je n’a vais pas vu qu’il 'y en avait pas )

Sury, ça ne sert pas vraiment désormais sous Debian, les paquets des dépôts Debian sont la plupart du temps suffisants (sauf peut être, et encore, pour des applciations un peu exotiques).

J’ai mis à jour ma version Debian, elle est en 12.10.

Je ne pense pas en avoir besoin.

Fait mais erreur.

 If you are reading this in your web browser, your server is probably
 not configured correctly to run PHP applications!

Je viens de faire un fichier php à la racine de localhost, je n’ai qu’une page blanche sur mon navigateur. Le contenu du fichier :

<?php phpinfo(); ?>

Pourtant, apache2 est installé et je n’ai jamais eu besoin de le configurer pour faire fonctionner php. Il est démarré.

edit : je m’étais fait un jeu de poker en php, il ne fonctionne pas non plus, page blanche.

Peut-tu fourni la liste des paquets php installé, le fichier du vhost ainsi que vérifié si le module est bien enabled

Tu devrais ,à minima, pour utiliser php avoir :

apt install php php-cli libapache2-mod-php

Et pour tes besoins avoir en plus :

apt install php-{curl,gd,intl,memcache,xml,zip,mbstring,json}

Si tu t’es orienté vers du php-fpm il faut remplacer certains paquets mais sinon c’est semblable.

php -m

PHP Warning: Module « curl » is already loaded in Unknown on line 0
PHP Warning: Module « exif » is already loaded in Unknown on line 0
PHP Warning: Module « intl » is already loaded in Unknown on line 0
PHP Warning: Module « mbstring » is already loaded in Unknown on line 0
[PHP Modules]
apcu
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gettext
hash
iconv
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
random
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
yaml
Zend OPcache
zlib

[Zend Modules]
Zend OPcache

Il se trouve où ? Je n’ai aucun fichier qui se nomme vhost

Ils sont déjà dans la version la plus récente.

Il ne me manque que le php-memcache et le php8.4-memcache. Installés.

Apache relancé, même erreur.

Edit : utilisation de la commande dpkg --get-selections php*

php install
php-apcu install
php-bcmath install
php-cli install
php-common install
php-curl install
php-gd install
php-gmp install
php-intl install
php-json install
php-luasandbox install
php-mbstring install
php-memcache install
php-mysql install
php-wikidiff2 install
php-xml install
php-yaml install
php-zip install
php7.0-intl deinstall
php7.0-json deinstall
php7.0-mbstring deinstall
php7.0-opcache deinstall
php7.0-readline deinstall
php7.0-xml deinstall
php7.1-mcrypt deinstall
php7.4-json deinstall
php7.4-mbstring deinstall
php7.4-opcache deinstall
php7.4-readline deinstall
php7.4-xml deinstall
php8.2-cli install
php8.2-common install
php8.2-mbstring deinstall
php8.2-opcache install
php8.2-phpdbg install
php8.2-readline install
php8.2-xml deinstall
php8.3 install
php8.3-apcu deinstall
php8.3-bcmath install
php8.3-bz2 deinstall
php8.3-cli install
php8.3-common install
php8.3-curl install
php8.3-gd install
php8.3-gmp install
php8.3-intl install
php8.3-mbstring install
php8.3-mysql install
php8.3-opcache install
php8.3-readline install
php8.3-xml install
php8.3-zip install
php8.4 install
php8.4-apcu install
php8.4-cgi install
php8.4-cli install
php8.4-common install
php8.4-curl install
php8.4-fpm install
php8.4-intl install
php8.4-mbstring install
php8.4-memcache install
php8.4-mysql install
php8.4-opcache install
php8.4-phpdbg install
php8.4-readline install
php8.4-xml install
php8.4-yaml install
phpsysinfo deinstall

tout est normal:
à ta place je commencerais par virer sury de ton sources.list, puis enlever tout ce qui vient de sury parmi ces paquets ( en faisant attention à ce qui est viré : notes ) et aussi les paquets php7

ensuite vérifier que les 8.2 viennent bien de debian

ensuite reéinstaller tous les paquets php dont tu as besoin

Je n’ai pas sury dans le fichier sources.list

J’ai supprimé toutes les versions de php, je n’ai laissé que la version 8.4.

dpkg --get-selections php*

php-apcu install
php-common install
php-memcache install
php-yaml install
php8.4 install
php8.4-apcu install
php8.4-cgi install
php8.4-cli install
php8.4-common install
php8.4-curl install
php8.4-fpm install
php8.4-intl install
php8.4-mbstring install
php8.4-memcache install
php8.4-mysql install
php8.4-opcache install
php8.4-phpdbg install
php8.4-readline install
php8.4-xml install
php8.4-yaml install
phpsysinfo deinstall

Même après avoir fait ça et redémarré apache2, c’est toujours pareil.
Serveur non configuré correctement pour exécuter les applications PHP…

en fait il faut aussi regarder dans /etc/apt/sources.list.d/*list

les bonnes versions pour debian stable sont les 8.2 pas les 8.4 : tu dois a priori enlever les 8.4
puis pour php :
sudo apt-get install php php-apcu php-cgi php-cli php-common php-curl php-fpm php-intl php-mbstring php-memcache php-mysql php-opcache php-phpdbg php-readline php-xml php-yaml

PS n’oublies pas de sauvegarder tes données au cas où

Et pour activer php:
a2enmod php8.2

Tu peux vérifier les modules activés dans apache avec
a2query -m