Opened 5 years ago

Last modified 5 years ago

#2058 closed Bug/Fehler

PHP8 Inkompatiblität in header.php — at Initial Version

Reported by: johannes@… Owned by: somebody
Priority: hoch Milestone: modified-shop-2.0.7.0
Component: Shop Version: 2.0.6.0
Keywords: Cc:
Blocked By: Blocking:

Description

Leider kann ich das Problem nicht im Demoshop reproduzieren, da dieser nicht mit PHP8 läuft.

Es geht um diesen Fehler:
ERROR found for URL: /checkout_shipping.php {} {}
method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given in File: /webroot/includes/header.php on Line: 132 {} {}

Dieser tritt auf, wenn ein neukunde nach dem Anlegen des Accounts auf die checkout_shipping.php Seite kommt und aufgefordert wird die Datenschutzbestimmungen zu bestätigen.

In diesem Fall ist die "$shipping_modules" Variable "null", was durch eine Änderung, die mit PHP8 gekommen ist zu diesem Fehler führt.

Der betroffene Code in header.php ist dieser hier:

  case FILENAME_CHECKOUT_SHIPPING:
      require('includes/form_check.js.php');
      if ($method_exists($shipping_modules, 'javascript_validation')) {
        echo $shipping_modules->javascript_validation();
      }
    break;

Ein möglicher Fix wäre:

  case FILENAME_CHECKOUT_SHIPPING:
      require('includes/form_check.js.php');
      if ($shipping_modules && method_exists($shipping_modules, 'javascript_validation')) {
        echo $shipping_modules->javascript_validation();
      }
    break;

Es ist nicht auszuschließen, dass die "$payment_modules" Variable evbenfalls ein ähnliches Problem verursacht, daher sollte vielleicht noch der Code entsprechend angepasst werden:

  case FILENAME_CHECKOUT_PAYMENT:
      require('includes/form_check.js.php');
      if (method_exists($payment_modules, 'javascript_validation')) {
        echo $payment_modules->javascript_validation();
      }
    break;

Change History (0)

Note: See TracTickets for help on using tickets.