Division durch Null Fehler in image.php

Überprüfen mein Fehlerprotokoll auf dem Server Ich sehe ständig den Fehler:

PHP Warning: Division by zero in /public_html/wp-content/themes/sass-wordpress-bootstrap-master/image.php on line 95 

Hier ist der Code, in dem der Fehler auftritt:

 $imgmeta = wp_get_attachment_metadata( $id ); // Convert the shutter speed retrieve from database to fraction if ((1 / $imgmeta['image_meta']['shutter_speed']) > 1) { if ((number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1)) == 1.3 or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 1.5 or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 1.6 or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 2.5){ $pshutter = "1/" . number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1, '.', '') . " second"; } else{ $pshutter = "1/" . number_format((1 / $imgmeta['image_meta']['shutter_speed']), 0, '.', '') . " second"; } } else{ $pshutter = $imgmeta['image_meta']['shutter_speed'] . " seconds"; } 

Ich bin mir nie sicher, wann das wirklich heißen würde. Könnte ein Bot diesen Fehler auslösen?

Solutions Collecting From Web of "Division durch Null Fehler in image.php"

Die Verschlusszeit ist eine der exif-Daten, die WordPress versucht, aus Bildern zu extrahieren, wenn sie hochgeladen werden. Wenn das Bild die Information nicht enthält, wird es Null sein, daher Ihre Division durch Nullerrors. Irgendwo vor diesem Code solltest du überprüfen, ob das Bild dort hin muss. Wenn es kein Foto ist, dann wahrscheinlich nicht.

Selbst wenn Sie sicher sind, dass alle Ihre Bilder die ‘shutter_speed’ deklariert haben und mehr als 0 (obwohl Ihr Fehlerbericht besagt, dass einige nicht haben), ist es eine gute Übung, sie zu validieren.

Versuchen Sie, ein neues Elternelement wie folgt hinzuzufügen:

 if ( isset($imgmeta['image_meta']['shutter_speed']) && (intval($imgmeta['image_meta']['shutter_speed'])>0) ) { ... } else { $pshutter = 'unknow'; } 

Der Fehler wird auf Bildanhangsseiten generiert, daher handelt es sich höchstwahrscheinlich um einen Bot. Aber ich habe einen Check hinzugefügt, bevor die Verschlusszeit in einen Bruch umgewandelt wird:

 $imgmeta = wp_get_attachment_metadata( $id ); $imgShutter = $imgmeta['image_meta']['shutter_speed']; // Convert the shutter speed retrieve from database to fraction if ($imgShutter > 0) { if ((1 / $imgmeta['image_meta']['shutter_speed']) > 1) { if ((number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1)) == 1.3 or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 1.5 or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 1.6 or number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1) == 2.5){ $pshutter = "1/" . number_format((1 / $imgmeta['image_meta']['shutter_speed']), 1, '.', '') . " second"; } else{ $pshutter = "1/" . number_format((1 / $imgmeta['image_meta']['shutter_speed']), 0, '.', '') . " second"; } } else{ $pshutter = $imgmeta['image_meta']['shutter_speed'] . " seconds"; } }