Support » Installation » Fehler nach Update von PHP 7.4 auf 8.1

  • Gelöst felixfun

    (@felixfun)


    Hallo liebes Forum,
    aktuell haben wir ein Problem, bei welchem wir nicht weiter kommen.
    Wir haben von PHP 7.4 auf PHP 8.1 umgestellt, leider bekommen wir seitdem beim Zugriff auf betreffende Seite vom WordPress nur einen fatal Error.

    Im Log wird dazu folgender Eintrag generiert:
    [Mon Nov 14 10:13:18 2022] [php:error] [pid 25862] [client XXX.XXX.XXX.XXX] [host xxx] PHP Fatal error: Uncaught Error: Undefined constant "subpage" in /is/htdocs/wp12970422_GYNNPUMRAR/www/wp-content/themes/gfs/p300sgbv.php:14\nStack trace:\n#0 /is/htdocs/wp12970422_GYNNPUMRAR/www/wp-includes/template-loader.php(106): include()\n#1 /is/htdocs/wp12970422_GYNNPUMRAR/www/wp-blog-header.php(19): require_once('/is/htdocs/wp12...')\n#2 /is/htdocs/wp12970422_GYNNPUMRAR/www/index.php(17): require('/is/htdocs/wp12...')\n#3 {main}\n thrown in /is/htdocs/wp12970422_GYNNPUMRAR/www/wp-content/themes/gfs/p300sgbv.php on line 14

    in der betreffenden Line14 steht:
    get_header(subpage); ?>
    Unter PHP 7.4 funktioniert alles. Leider kenne ich mich mit PHP absolut gar nicht aus, das Theme hat damals ein Kollege erstellt, der mittlerweile nicht mehr im Unternehmen ist.

    Über Tipps wäre ich sehr dankbar.

    Vielen Dank und LG
    Felix

Ansicht von 4 Antworten - 16 bis 19 (von insgesamt 19)
  • Thread-Starter felixfun

    (@felixfun)

    Sorry, mein Fehler.
    Das sollte der richtige sein:

    https://pastebin.com/zN0q4jxk

    Fehler behoben? – Ich habe mir die betreffende Seite angesehen und kann da keinen Fehler entdecken.

    In Zeile 73 des Templates wird eine Funktion printf() zur formatierten Ausgabe von Werten verwendet. Das erste Attribut der Funktion ist eine Formatierungsanweisung, die folgenden Argumente enthalten die Variable(n), die formatiert ausgegeben werden soll. Dabei müssen so viele Variablen aufgeführt werden, wie in der Formatierungsanweisung als Platzhalter vorhanden sind.

    Bei printf( $meta_text, get_permalink() ); soll der Permalink des Posts, der mit get_permalink() abgerufen wird, formatiert ausgegeben werden. Die Formatierung wird je nach dem wieviel Kategorien und Schlagwörtern (Tags) dem Beitrag zugewiesen wurden unterschiedlich gesetzt.

    Nehmen wir ein Beispiel:

    $meta_text = __( 'This entry was tagged with %2$s <br />this article <a href="%3$s" rel="bookmark">', 'pure-simple') . $parent_title . '</a><br />';

    Hier wurde als Formatierungsangabe festgelegt, dass der Text im Format
    This entry was tagged with
    + 2. Variable
    + <br />this article <a href="
    + 3. Variable
    + " rel="bookmark">
    + $parent_title
    + </a><br />;
    ausgegeben werden soll.

    Das Problem ist, dass printf( $meta_text, get_permalink() ); aber nur eine Variable enthält (den Permalink), aber eine 2. und 3. Variable ausgegeben werden soll. Folglich kommt es zu einem Programmierfehler.

    Langer Rede kurzer Sinn: lass da mal einen Dienstleister dran, der das wieder in Ordnung bringt.

    „Aber, aber, es hat doch früher funktioniert …“ kann übrigens damit zusammen hängen, dass PHP vereinfacht gesagt inzwischen weniger fehlertolerant geworden ist und mit einer neuen PHP-Versionen eher ein Programmierfehler auftaucht.

    Thread-Starter felixfun

    (@felixfun)

    Vielen Dank auch noch einmal dafür…
    Mit deiner Hilfestellung konnte ich den Fehler zumindest erst einmal beheben, wir sind aber trotzdem auf der Suche nach einem Dienstleister, welcher das in Zukunft übernimmmt…

    Das Thema kann nun zu, vielen Dank an alle Beteiligten!

    LG

Ansicht von 4 Antworten - 16 bis 19 (von insgesamt 19)