• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Gelöst Apache2 lädt das Modul maysqli nicht mehr

f.gruber

Hacker
Hallo, nach dem Systemupgrade auf Suse 15.4 und dann auf PHP8 wird das Apahe2 Modul mysqli nicht mehr geladen.

Ich erhalte jedenfalls bei meinen PHP Seiten - und das sind viele - die mysqli verwenden die Fehlermeldung

Code:
EXCEPTION:
Call to undefined function mysqli_connect()

Da ich bei derartigen Fehlern von meinen Projekten per Mail benachrichtigt werde, erhalte ich innerhalb einiger Minuten einige hundert Mails und musste daher den HTTP Server stoppen.

Ich plage mich nun seit einigen Stunden und kommen nicht dahinter, wie ich mysqli wieder reaktivieren kann.

Hier einige Infos:

Code:
php -m
[PHP Modules]
bz2
Core
ctype
date
dom
filter
gd
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib

Demnach sollte das mysqli Modul eigentlich geladen werden.

Ich habe versucht, in /etc/php8/apache2/php.ini folgende Zeile einzufügen:
Code:
extension=/usr/lib64/php8/extensions/mysqli
Habe es auch ohne Pfadangabe versucht:
Code:
extension=mysqli

In der LOG Datei /var/log/apache2/error.log sehe ich nämlich folgende Zeile:

Code:
PHP Warning:  PHP Startup:
Unable to load dynamic library 'mysqli' (tried: /usr/lib64/php8/extensions/mysqli (/usr/lib64/php8/extensions/mysqli:
Kann die Shared-Object-Datei nicht \xc3\xb6ffnen:
Datei oder Verzeichnis nicht gefunden),
/usr/lib64/php8/extensions/mysqli.so (/usr/lib64/php8/extensions/mysqli.so:
undefined symbol: mysqlnd_global_stats))
in Unknown on line 0

Die Datei mysqli.so existiert aber

Code:
t2792:/usr/lib64/php8/extensions # dir
insgesamt 2832
-rwxr-xr-x 1 root root   27408 29. Dez 10:15 bz2.so
-rwxr-xr-x 1 root root   14640 29. Dez 10:15 ctype.so
-rwxr-xr-x 1 root root  168144 29. Dez 10:15 dom.so
-rwxr-xr-x 1 root root  114440 29. Dez 10:15 gd.so
-rwxr-xr-x 1 root root   14736 29. Dez 10:15 gettext.so
-rwxr-xr-x 1 root root   47952 29. Dez 10:15 iconv.so
-rwxr-xr-x 1 root root 1067608 29. Dez 10:15 mbstring.so
-rwxr-xr-x 1 root root  142416 29. Dez 10:15 mysqli.so
-rwxr-xr-x 1 root root  281792 29. Dez 10:15 mysqlnd.so
-rwxr-xr-x 1 root root  219440 29. Dez 10:15 openssl.so
-rwxr-xr-x 1 root root   31376 29. Dez 10:15 pdo_mysql.so
-rwxr-xr-x 1 root root  134608 29. Dez 10:15 pdo.so
-rwxr-xr-x 1 root root   35856 29. Dez 10:15 pdo_sqlite.so
-rwxr-xr-x 1 root root  306928 29. Dez 10:15 phar.so
-rwxr-xr-x 1 root root   60784 29. Dez 10:15 sqlite3.so
-rwxr-xr-x 1 root root   31344 29. Dez 10:15 tokenizer.so
-rwxr-xr-x 1 root root   35664 29. Dez 10:15 xmlreader.so
-rwxr-xr-x 1 root root   47952 29. Dez 10:15 xmlwriter.so
-rwxr-xr-x 1 root root   52272 29. Dez 10:15 zlib.so

Was stimmt da nicht?

Zypper listet das mysqli Modul (Paket) nicht extra auf ???

Code:
zypper se -i php8
Repository-Daten werden geladen...
Installierte Pakete werden gelesen...

S  | Name             | Summary                                                | Type
---+------------------+--------------------------------------------------------+------
i+ | apache2-mod_php8 | PHP8 module for the Apache 2.x webserver               | Paket
i+ | php8             | Interpreter for the PHP scripting language version 8   | Paket
i  | php8-bz2         | bzip2-Codec-Unterstützung für PHP                      | Paket
i+ | php8-cli         | Interpreter for the PHP scripting language version 8   | Paket
i  | php8-ctype       | "Character class"-Erweiterung für PHP                  | Paket
i  | php8-dom         | "Document Object Model"-Erweiterung für PHP            | Paket
i  | php8-gd          | GD Grafik-Bibliotheks-Erweiterung für PHP              | Paket
i  | php8-gettext     | Native Sprachunterstützung für PHP                     | Paket
i  | php8-iconv       | Zeichensatz-Konvertierungsfunktionen für PHP           | Paket
i  | php8-mbstring    | Multibyte Zeichenkettenfunktionen für PHP              | Paket
i  | php8-mysql       | MySQL-Datenbank-Client für PHP                         | Paket
i  | php8-openssl     | OpenSSL-Integration für PHP                            | Paket
i  | php8-pdo         | PHP-Datenobjekt-Erweiterung für PHP                    | Paket
i+ | php8-phar        | PHP Archive extension for PHP                          | Paket
i  | php8-sqlite      | SQLite database client for PHP                         | Paket
i  | php8-tokenizer   | Extension module to access Zend Engine's PHP tokenizer | Paket
i  | php8-xmlreader   | Streaming XML reader extension for PHP                 | Paket
i  | php8-xmlwriter   | Streaming-based XML writer extension for PHP           | Paket
i  | php8-zlib        | Zlib compression support for PHP                       | Paket

Ich verwende (seit vielen Jahren) meine manuelle Apache Konfiguration (also nicht mit YAST). Natürlich gab es immer wieder mal etwas anzupassen. Aber so hilflos war ich schon lange nicht mehr.

Vielen Dank im Voraus für jeden Tipp
 
OP
F

f.gruber

Hacker
Problem gelöst.

Der Fehler lag in /etc/sysconfig/apache2

Habe die Datei manuell bearbeitet. In der langen Zeile der MODULE war eanscheinend in der Hektik ein Zeilenumbruch hineingerutscht.

Code:
APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_user autoindex cgi dir env expires include log_config mime negotiation rewrite setenvif ssl userdir reqtimeout authn_core authz_core version  php8"


Warum gibt es diese Datei /etc/sysconfig/apache2 (anscheinend nur bei Suse), wo doch die ganze Konfiguration in /etc/apache2 in den diversen Dateien liegt. In der Datei default-server.conf steht doch alles, was geladen werden soll, hätte ich gedacht ...
 
Oben