[geloest] Apache2 scheint an php8.1 vorbei zu laufen

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
Draal
Beiträge: 532
Registriert: 11.03.2005 14:45:26

[geloest] Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von Draal » 08.03.2022 11:50:58

Hallo,

der Host läuft mit Debian Bookworm. Apache2, php und MariaDB laufen schon seit Buster auf dieser Maschine. Der Apache2 stellt 5 Webseiten zur Verfügung. Eine handgeschriebene mit einem php Kontaktformular. Die anderen 4 sind Wordpress CMS, davon 3 via Letsencrypt verschlüsselt.

Letzt wurden, bei einem dist-upgrade, sämtliche php Versionen deinstalliert und php8.1 installiert. Seit dem erhalte ich folgende Meldung beim Aufruf einer meiner Seiten:
Fatal error: Uncaught mysqli_sql_exception: No such file or directory in /var/www/www/wp-includes/wp-db.php:1653 Stack trace: #0 /var/www/www/wp-includes/wp-db.php(1653): mysqli_real_connect() #1 /var/www/www/wp-includes/wp-db.php(632): wpdb->db_connect() #2 /var/www/www/wp-includes/load.php(558): wpdb->__construct() #3 /var/www/www/wp-settings.php(124): require_wp_db() #4 /var/www/www/wp-config.php(116): require_once('...') #5 /var/www/www/wp-load.php(50): require_once('...') #6 /var/www/www/wp-blog-header.php(13): require_once('...') #7 /var/www/www/index.php(17): require('...') #8 {main} thrown in /var/www/www/wp-includes/wp-db.php on line 1653

There has been a critical error on this website.

Learn more about troubleshooting WordPress.
Da das Kontaktform auf der handgeschriebenen Website ebenfalls nicht funktioniert, schließe ich auf eine fehlerhafte Einbindung von php. Widersprüchlich ist dagegen, dass phpmyadmin aufrufbar ist.

php8.1 ist beim Apachen in mods-enebled eingebunden.

Ich bin, zugegebenerweise, etwas ratlos. :roll:
Zuletzt geändert von Draal am 20.03.2022 14:58:58, insgesamt 1-mal geändert.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von thoerb » 08.03.2022 12:45:24

Code: Alles auswählen

 No such file or directory in /var/www/www/wp-includes/wp-db.php
Hast du dir das mal angeschaut?

Mozie
Beiträge: 31
Registriert: 20.05.2015 13:09:39

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von Mozie » 09.03.2022 13:17:59

Php scheint zu funktionieren, du bekommst ja den entsprechenden php Fehler angezeigt. Sind denn auf dem Host alle benötigten Pakete installiert bspw. Php8.1-mysql?

Grüße
Micha

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von thoerb » 09.03.2022 13:43:42

Draal hat geschrieben: ↑ zum Beitrag ↑
08.03.2022 11:50:58
Widersprüchlich ist dagegen, dass phpmyadmin aufrufbar ist.
Dann scheint doch alles zu funktionieren. Auch MySQL bzw. MariaDB.

Ich kenne mich mit Bookworm nicht aus, aber ist "/var/www/www/" der korrekte Pfad zum DocumentRoot?

Bisher war das immer "/var/www/html".

Mehr Informationen zu deiner PHP-Installation erfährst du mit:

Code: Alles auswählen

php -i

Benutzeravatar
Draal
Beiträge: 532
Registriert: 11.03.2005 14:45:26

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von Draal » 09.03.2022 16:14:38

thoerb hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 13:43:42
Ich kenne mich mit Bookworm nicht aus, aber ist "/var/www/www/" der korrekte Pfad zum DocumentRoot?
Das wird ja in der default.conf des Apachen definiert. Unter /var/www sind alle Webseiten meines Hosts geparkt.

Auszug aus php -i:

Code: Alles auswählen

mysqli

MysqlI Support => enabled
Client API library version => mysqlnd 8.1.2
Active Persistent Links => 0
Inactive Persistent Links => 0
Active Links => 0

Directive => Local Value => Master Value
mysqli.allow_local_infile => Off => Off
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
mysqli.default_user => no value => no value
mysqli.local_infile_directory => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
mysqli.rollback_on_cached_plink => Off => Off

mysqlnd

mysqlnd => enabled
Version => mysqlnd 8.1.2
Compression => supported
core SSL => supported
extended SSL => supported
Command buffer size => 4096
Read buffer size => 32768
Read timeout => 86400
Collecting statistics => Yes
Collecting memory statistics => No
Tracing => n/a
Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password
API Extensions => mysqli,pdo_mysql
Und hier noch Zeile 1653 aus wp-db.php:

Code: Alles auswählen

mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
                        } else {
                                // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
                                @mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
                        }

                        if ( $this->dbh->connect_errno ) {
                                $this->dbh = null;

                                /*
                                 * It's possible ext/mysqli is misconfigured. Fall back to ext/mysql if:
                                 *  - We haven't previously connected, and
                                 *  - WP_USE_EXT_MYSQL isn't set to false, and
                                 *  - ext/mysql is loaded.
                                 */
                                $attempt_fallback = true;
Letztere sagt mir, zugegebenerweise, nichts. :roll:

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von thoerb » 09.03.2022 16:54:20

Draal hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 16:14:38
thoerb hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 13:43:42
Ich kenne mich mit Bookworm nicht aus, aber ist "/var/www/www/" der korrekte Pfad zum DocumentRoot?
Das wird ja in der default.conf des Apachen definiert. Unter /var/www sind alle Webseiten meines Hosts geparkt.
Und in /var/www/ hast du 5 Verzeichnisse?

Vier mit Wordpress-Installationen und eine mit deiner selbst geschriebenen Seite, die mit dem Kontaktformular?

Was passiert denn oder passiert nicht, wenn du deine selbst geschriebene Seite im Webbrowser aufrufst?

Und wie rufst du sie auf? In dem du das entsprechende Verzeichnis in der URL aufrufst oder hast du Virtual Hosts für die Seiten eingerichtet?
Draal hat geschrieben: ↑ zum Beitrag ↑
08.03.2022 11:50:58
php8.1 ist beim Apachen in mods-enebled eingebunden.
Und wird auch in der Ausgabe von php -v angezeigt?

Benutzeravatar
Draal
Beiträge: 532
Registriert: 11.03.2005 14:45:26

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von Draal » 09.03.2022 17:22:27

thoerb hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 16:54:20
Und in /var/www/ hast du 5 Verzeichnisse?

Vier mit Wordpress-Installationen und eine mit deiner selbst geschriebenen Seite, die mit dem Kontaktformular?
Korrekt
thoerb hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 16:54:20
Was passiert denn oder passiert nicht, wenn du deine selbst geschriebene Seite im Webbrowser aufrufst?
Die Seite erscheint, nur das Kontaktform erscheint nicht. Es ist ganz simpel eingebunden:

Code: Alles auswählen

<?php include("kontakt.php"); ?>
thoerb hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 16:54:20
Und wie rufst du sie auf? In dem du das entsprechende Verzeichnis in der URL aufrufst oder hast du Virtual Hosts für die Seiten eingerichtet?
Sie werden über einen DynDns Dienst angesprochen. Es sind Sub Domains, die in der default.conf des Apachen als Virtual Hosts definiert sind, inklusive der Umleitungen von http auf https. Die Fehlermeldung im Einstiegspost wird übrigens verschlüsselt (https) angezeigt.

Wie schon erwähnt liefen die Seiten bis php7.3 fehlerfrei.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von thoerb » 09.03.2022 18:01:40

Draal hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 17:22:27
thoerb hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 16:54:20
Was passiert denn oder passiert nicht, wenn du deine selbst geschriebene Seite im Webbrowser aufrufst?
Die Seite erscheint, nur das Kontaktform erscheint nicht. Es ist ganz simpel eingebunden:

Code: Alles auswählen

<?php include("kontakt.php"); ?>
Bekommst du eine PHP-Fehlermeldung? (In /var/log/apache2/error.log)

Oder wird der PHP-Code einfach auf der Webseite ausgegeben?
Draal hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 17:22:27
Es sind Sub Domains, die in der default.conf des Apachen als Virtual Hosts definiert sind, inklusive der Umleitungen von http auf https.
So gut kenne ich mich damit nicht aus, aber vielleicht musst du die nach der Installation einer neuen PHP-Version erneut aktivieren:

https://wiki.ubuntuusers.de/Apache/Virtual_Hosts/

Code: Alles auswählen

a2ensite MEIN_VHOST.conf

Benutzeravatar
Draal
Beiträge: 532
Registriert: 11.03.2005 14:45:26

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von Draal » 10.03.2022 14:26:44

thoerb hat geschrieben: ↑ zum Beitrag ↑
09.03.2022 18:01:40
Bekommst du eine PHP-Fehlermeldung? (In /var/log/apache2/error.log)
Auszug aus apache2/error.log:

Code: Alles auswählen

[Thu Mar 10 14:18:33.179757 2022] [php:notice] [pid 65095] [client 77.0.209.186:43632] PHP Notice:  session_start(): Ignoring session_start() because a session is already active in /var/www/minecraft/kontakt.php on line 2
[Thu Mar 10 14:18:33.192841 2022] [php:error] [pid 65095] [client 77.0.209.186:43632] PHP Fatal error:  Uncaught Error: Undefined constant "name" in /var/www/minecraft/kontakt.php:403\nStack trace:\n#0 /var/www/minecraft/index.php(242)>

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von thoerb » 10.03.2022 15:08:02

Die Seite erscheint, nur das Kontaktform erscheint nicht.

Code: Alles auswählen

PHP Fatal error:  Uncaught Error: Undefined constant "name"
Also wenn da Fehler angezeigt werden bedeutet das, dass PHP läuft. Jetzt müsstest du deinen Code auf Stand bringen, sodass er mit PHP 8.1 wieder fehlerfrei ausgeführt wird. Du sagtest ja, dass der Code mit einer älteren PHP-Version lief.

Da du von einem Kontaktformular sprichst, könnte das hier vielleicht schon die Lösung sein:

https://stackoverflow.com/questions/294 ... stant-mean

Zu den Problemen mit Wordpress kann ich leider nichts sagen. Das könnte an der Konfiguration liegen oder an einem Plugin oder Wordpress selbst ist in der von dir installierten Version mit PHP 8.1 nicht kompatibel.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von eggy » 12.03.2022 01:12:08

Erstmal vorweg: es ist eine extrem ungute Idee, nen Produktiven Testing Server zu betreiben.
Warum? https://www.debian.org/devel/testing.de.html
Ein wichtiges Detail, das beachtet werden sollte – sowohl von Benutzern als auch von Testing-Entwicklern – ist, dass Sicherheitsaktualisierungen für Testing nicht vom Sicherheitsteam verwaltet werden. Für weitere Informationen lesen Sie die FAQ des Sicherheitsteams.
In php8/php8.1 haben sich gegenüber den 7er Versionen einige Sachen geändert. Gibt einige Pakete die umgeschrieben werden müssen, eh sie mit der 8er tun. https://bugs.debian.org/cgi-bin/bugrepo ... bug=976811

Teils müssen die Maintainer selbst was tun, teilweise können sie einfach abwarten, bis Upstream ne neue Version rausgibt. Manchmal führt so ein Übergang auch zum Rauswurf, weil sich niemand mehr kümmert und die Umbauten zu umfangreich werden.
Bei Wordpress scheint aber "neue Version behebt es" ( https://bugs.debian.org/cgi-bin/bugrepo ... ug=1007005 ) die Lösung zu sein. Also entweder aufs Debianpaket warten oder selbst tätig werden.

Bei Stable bekommt man in der Regel von solchen Transitions-bedingten Problemen nur wenig bis gar nichts mit.
Das Versionschaos sollte nur in unstable/testing zu Tage treten und bis zum nächsten Release behoben sein.

Benutzeravatar
Draal
Beiträge: 532
Registriert: 11.03.2005 14:45:26

Re: Apache2 scheint an php8.1 vorbei zu laufen

Beitrag von Draal » 20.03.2022 14:58:26

eggy hat geschrieben: ↑ zum Beitrag ↑
12.03.2022 01:12:08
Erstmal vorweg: es ist eine extrem ungute Idee, nen Produktiven Testing Server zu betreiben.
Das ist mir durchaus bewusst und wurde mir schon vor langer Zeit nahe gelegt: viewtopic.php?t=135913#p877768

Zum Abschluss: Die alten Wordpress Versionen (5.8.1) laufen mit php 8.x. Allerdings wurde die Fehlermeldung nach manueller Installation von WP 5.9.1 erheblich deutlicher.
Die eigentliche Ursache lag an der Datenbank (mariadb), die scheinbar nicht richtig lief. Ich meine mich erinnern zu können, dass mariadb bei einem der letzten dist-upgrades komplett entfernt und wieder installiert wurde.
Alle WP Instanzen sind jetzt hochgezogen.

Antworten