Nach update auf Leap 15.3 Failed to start The Apache Webserver

Nach dem Update von Leap 15.2 auf Leap 15.3 startet der Apache Webserver nicht mehr.
systemctl status apache2.service
apache2.service - The Apache Webserver
Loaded: loaded (/user/lib/systemd/system/apache2.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2021-06-27 22:06:39 CEST; 26min ago
Process: 2807 ExecStart=/usr/sbin/start_apache2-DSYSTEMD -DFOREGROUND -k start (code=exited, status=1/FAILURE)
Main PID: 2807 (code=exited, status=1/FAILURE)

linux systemd [1]: Starting The Apache Webserver…
linux start_apache2[2807]: httpd-prefork: Syntax error in -C/-c directive: Syntax error on line 28 of /etc/apache2/sysconfigd/loadmodule.conf: Can´t locate API module structure ‘php8_module’ in file /user/lib64/apache2/mod_php8.so: undefined symbol: php8_module
linux systemd [1]: apache2.service: Main process exited, status=1/FAILURE
linux systemd [1]: apache2.service: Failed with result ‘exit-code’.
linux systemd [1]: Failed to start The Apache Webserver.

Das php8_module mod_php8.so steht in allen oben aufgeführten Verzeichnissen.
Ich habe das mod_php8.so Modul auch nochmal nachinstalliert, falls die Struktur fehlerhaft ist. Es hat nicht geholfen.

Wäre eine Lösung php8 zu deinstallieren und php7 zu installieren? In Leap 15.2 war php7 installiert.
Kann mir bitte jemand bei der Lösung des Problems behilflich sein?

Mit freundlichen Grüßen
gindi

https://php.watch/versions/8.0/mod_php-rename

Bitte für Konsolenausgaben Code-Tags benutzen.
https://forums.opensuse.org/showthread.php/536143-Using-Code-Tags-Around-Your-Paste

Danke für den Hinweis in Link 1. Ich habe “LoadModule php8_module” in “LoadModule php_module” geändert und der Apache läuft wieder.
Entweder ist der Hinweis zu Apache module loading configuration sehr alt und wurde flüchtig auf php8 umgeschrieben oder er passt nicht zu SUSE Linux.
Bei mir ist LoadModule php_module “/usr/lib64/apache2/mod_php8.so” der richtige Pfad und nicht “/usr/lib/apache2/modules/libphp8.0.so”.

Der Hinweis in Link 2 ist verständlich wenn man ins Internet kommt aber ohne Apache ist das nicht möglich.
Ich habe die Fehlermeldung in einen Computer mit Internet (Leap15.2) eingetippt.

Vielen Dank für die schnelle Hilfe.

Mit freundlichen Grüßen
gindi

Schön das es wieder läuft.

Der Hinweis in Link 2 ist verständlich wenn man ins Internet kommt aber ohne Apache ist das nicht möglich.
Ich habe die Fehlermeldung in einen Computer mit Internet (Leap15.2) eingetippt.

Ich hab hier keinen Webserver am laufen und komme trotzdem ins Internet…
Das kommt dann wohl auf die jeweiligen Einstellungen an…

Danke für den Hinweis in Link 1. Ich habe “LoadModule php8_module” in “LoadModule php_module” geändert und der Apache läuft wieder.
Entweder ist der Hinweis zu Apache module loading configuration sehr alt und wurde flüchtig auf php8 umgeschrieben oder er passt nicht zu SUSE Linux.
Bei mir ist LoadModule php_module “/usr/lib64/apache2/mod_php8.so” der richtige Pfad und nicht “/usr/lib/apache2/modules/libphp8.0.so”.

32 (lib) oder 64 (lib64) bit…
Und dann baut openSUSE evtl. etwas anders (andere Pfade usw.)

Leider habe ich mich zu früh gefreut und bin nochmal auf Hilfe angewiesen.
.
Ich komme zwar wieder ins Internet und der localhost funktioniert aber phpMyAdmin finden den Server nicht.
Beim booten kommt wieder die Fehlermeldung “Failed to start The Apache Webserver” aber bis auf PHP funktioniert alles.
Wenn ich in /etc/apache2/sysconfig.d/loadmodule.conf den Eintrag LoadModule php8_module in LoadModule php_module ändere wird es beim Apache restart wieder von /etc/sysconfig/apache2/APACHE_MODULES= überschrieben.
Wenn ich den Eintrag php8 in /etc/sysconfig/apache2/APACHE_MODULES= in php ändere, wird in /etc/apache2/sysconfig.d/loadmodule.conf die ganze Zeile mit dem Eintrag LoadModule php8_module gelöscht.
Selbst wenn ich die Permissions von loadmodule.conf in 444 ändere, wird der Eintrag überschrieben.
Gibt es eine Möglichkeit daß der Eintrag LoadModule php_module in der LoadModule.conf erhalten bleibt?

Vielleicht kann man mir nochmal helfen.

Mit freundlichen Grüßen
gindi

Sorry, hatte ich vergessen.
Nach der Rückkehr zu php7 funktioniert mein Laptop wieder.

Der Thread kann geschlossen werden.

Mit freundlichen Grüßen
gindi

moin - kleine Anmerkung hier: Der ausgelieferte httpd-prefork von Opensuse mit dem php-modulen ist eine Möglichkeit, aber eigentlich schon nicht sehr gut.

Ich hab mal ne Doku geschrieben, wie man einen webserver mit php-fpm aufbaut, da spart man sich einige Problemchen, der ist schneller und stabiler:
https://obel1x.de/dokuwiki/doku.php?id=content:apache_phpfpm

Ist zwar jetzt noch Leap 15.2 und altes PHP7, aber geht sicherlich auch mit php8 und Leap 15.3 (das kommt heute mal dran)
grüße

Nur nicht übertreiben. Seit ewigen Zeiten installiere ich auf meinen openSUSE Maschinen das Pattern lamp_server:

Leap-15-3:~ # zypper if --type pattern lamp_server
Loading repository data...
Reading installed packages...


Information for pattern lamp_server:
------------------------------------
Repository      : Haupt-Repository
Name            : lamp_server
Version         : 20180302-lp153.1.14
Arch            : x86_64
Vendor          : openSUSE
Installed       : Yes
Visible to User : Yes
Summary         : Web and LAMP Server
Description     : 
    Software to set up a Web server that is able to serve static, dynamic, and interactive content (like a Web shop). This includes Apache HTTP Server, the database management system MySQL, and scripting languages such as PHP, Python, Ruby on Rails, or Perl.
Contents        : 
    S  | Name                        | Type    | Dependency
    ---+-----------------------------+---------+------------
    i  | apache2                     | package | Required
    i  | patterns-base-basesystem    | package | Required
    i+ | patterns-server-lamp_server | package | Required
    i  | apache2-doc                 | package | Recommended
    i  | apache2-example-pages       | package | Recommended
    i  | apache2-mod_php7            | package | Recommended
    i  | apache2-prefork             | package | Recommended
    i  | libapr-util1                | package | Recommended
    i  | libapr1                     | package | Recommended
    i  | mariadb                     | package | Recommended
    i  | perl                        | package | Recommended

Leap-15-3:~ # 

Dann füge ich in /etc/sysconfig/apache php7 hinzu:

Leap-15-3:~ # grep php /etc/sysconfig/apache2
APACHE_MODULES="actions alias auth_basic authn_core authn_file authz_host authz_groupfile authz_core authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl socache_shmcb userdir reqtimeout php7"
Leap-15-3:~ # 

Der Aufwand ist kaum der Rede wert und die Vorgehensweise hat seit 2014 immer funktioniert.:wink:

Ist mir noch nicht aufgefallen, siehe oben.

ist ja nur ein vorschlag zur erheblichen verbesserung. muss man nicht, aber dann hat man solche probleme irgendwann und kriegts ggfs gar nicht anders gelöst, es sei denn man fängt an php- module selbst zu bauen. War bei mir auch so. Seit umstellung auf php-fpm ist Ruhe, schon seit Jahren updates ohne größere Probleme . egal ob php, apache oder ein modul.

Der entscheidende Nachteil ist: man baut damit einen Single-Intanced Apache-Prozess, der PHP als Modul mit allen seinen Modulen beinhaltet. mod_php muss dabei genau zum apache passen, die module von php genau zum mod_php. da wirds dann irgendwann “dusselig” wenn man irgendwas updaten möchte.
Ist hiervon dann ein Ding nicht funktional - was viele Gründe haben kann, oder tut irgendein Programmteil von PHP oder der vielen PHP- Module nicht richtig, zieht man den gesamten Apache mit runter. Das ist der Grund, warum mod_php nie als stabil bezeichnet wurde.
Darum wurde php-fpm entwickelt und der Apache als event weiterentwickelt. Apache event und php-fpm gibts bereits als fertige, gute pakete, die Einrichtung ist für mich auch eher einfach (php-fpm zwei configs und apache ein proxy modul+config), siehe meine Doku.
Vorteile: Viel schnellerer, ressourcenschonender Apache und php, viel weniger probleme mit abhängigkeiten der php-module dadurch höhere flexibilität und stabilität bei patches und updates, da programme einfach unabhängig sind.

So ganz bin ich nicht überzeugt:

Update Probleme traten in den letzten 7 Jahren nicht auf. Das liegt weniger an openSUSE oder Apache, sondern eher an einer besonnenen Planung und einer robusten Vorgehensweise.

Recht hilfreich fand ich PHP und Apache-Webserver für optimale Leistung einrichten – Privatstrand

Naja, der Link beschreibt ja genau mein Vorgehen und auch der rät zu einer Umstellung. Nur halt in anderen Worten. Also halt auch php-fpm und apache-event.

Man kann leider nicht immer besonnen plannen, wenn sicherheitskritische software ein update bekommt, welches neue php-funktionien / versionen erfordert. Spätestens dann ist man froh, wenn php über fpm völlig unäbhängig von der apache-version ist. Aber auch die erhebliche performancesteigerung, stabilität und skalierbarkeit spricht dafür.

falls dich die worte nicht überzeugen: gerne mal machen und die leistung und systemressourcen vorher nachher vergleichen :wink: