Fehler bei PHP 7.1 in der Erweiterung dlh_googlemaps für Contao

In der neuesten Version von Contao treten beim Einsatz der Google-Map-Erweiterung unter PHP 7.1 Fehler auf, die Sie aber mithilfe unserer kleinen Anleitung beheben können.

Lesedauer: 2 Minuten
8 x gelesen
140 x gesehen

Problem

Wir setzen die Erweiterung dlh_googlemaps gerne in Contao ein und wollten jetzt aber für noch bessere Sicherheitsarchitektur und in Vorbereitung auf Contao 4 auf PHP 7.1 updaten.

Dies ist aber leider aufgrund der folgenden Fehlermeldungen nicht möglich.

Das Problem tritt bei Contao 3.5.34 auf. Über die zukünftige Situation können wir aktuell natürlich keine Auskunft geben. Bei PHP 7.0 tritt das Problem übrigens noch nicht auf.

Warning: A non-numeric value encountered in system/modules/dlh_googlemaps/classes/Googlemap.php on line 248

Sowie

Warning: A non-numeric value encountered in system/modules/dlh_googlemaps/classes/Googlemap.php on line 257

Lösung

Es muss abgefragt werden, ob die Größe des Icons überhaupt definiert wurde.

Die Datei Googlemap.php im Ordner /system/modules/dlh_googlemaps/classes/ muss folgendermaßen geändert werden:

Vorher (Zeile 240 bis 260)

$arrElement['iconSize'] = deserialize($arrElement['iconSize']);

$arrElement['iconAnchor'] = deserialize($arrElement['iconAnchor']);

if (!$arrElement['iconAnchor'][0] || $arrElement['iconAnchor'][0] == 0)
{
    $arrElement['iconAnchor'][0] = floor($arrElement['iconSize'][0] / 2);
}
else
{
    $arrElement['iconAnchor'][0] = floor($arrElement['iconSize'][0] / 2) + $arrElement['iconAnchor'][0];
}

if (!$arrElement['iconAnchor'][1] || $arrElement['iconAnchor'][1] == 0)
{
    $arrElement['iconAnchor'][1] = floor($arrElement['iconSize'][1] / 2);
}
else
{
    $arrElement['iconAnchor'][1] = floor($arrElement['iconSize'][1] / 2) + $arrElement['iconAnchor'][1];
}

Nachher

if($arrElement['iconSize'])
{
  $arrElement['iconSize'] = deserialize($arrElement['iconSize']);

  $arrElement['iconAnchor'] = deserialize($arrElement['iconAnchor']);

  if (!$arrElement['iconAnchor'][0] || $arrElement['iconAnchor'][0] == 0)
  {
      $arrElement['iconAnchor'][0] = floor($arrElement['iconSize'][0] / 2);
  }
  else
  {
      $arrElement['iconAnchor'][0] = floor($arrElement['iconSize'][0] / 2) + $arrElement['iconAnchor'][0];
  }

  if (!$arrElement['iconAnchor'][1] || $arrElement['iconAnchor'][1] == 0)
  {
      $arrElement['iconAnchor'][1] = floor($arrElement['iconSize'][1] / 2);
  }
  else
  {
      $arrElement['iconAnchor'][1] = floor($arrElement['iconSize'][1] / 2) + $arrElement['iconAnchor'][1];
  }
}

Hinweis

Es wird keine Haftung übernommen, wenn daraufhin Probleme in Ihrer Contao-Installation entstehen. Führen Sie daher vor Änderungen immer eine Sicherheit durch oder arbeiten Sie in einer Testumgebung.

Außerdem ist die Anleitung auch immer Projekt bezogen zu sehen. Sollten Sie andere Funktionen einsetzen als wir, dann kann es sein, dass dadurch nicht alle Probleme beseitigt werden oder evtl. sogar neue Probleme entstehen können.

Artikelbewertung
0,0 von 5 Sternen (0 Stimmen)
Sie können diesen Artikel bewerten indem Sie einen Kommentar abgeben.
Kommentare & Bewertungen
Einen Kommentar schreiben
Bewerten Sie diesen Artikel
Datenschutz*
Bitte addieren Sie 3 und 3.
Ähnliche Beiträge
Meistgelesene Beiträge

Diese Artikel wurden bisher am häufigsten gelesen (Zähler seit 13.11.2021)

Newsletter Anmeldung

Wir versenden nur informative und relevante Inhalte, höchstens einmal im Monat.

Was ist die Summe aus 5 und 6?
Datenschutzerklärung
Weitere Newsletter-Einstellungen