Page MenuHomePhabricator

FormatMetadata: PHP Warning: Array to string conversion
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error

PHP Warning: FormatMetadata::flattenArrayReal: Invalid $vals, contains nested arrays: [{"GPSAltitude":"105831\/100"},{"GPSLatitude":-19.045895},{"GPSLongitude":16.236805}] [Called from FormatMetadata::flattenArrayReal

labels.normalized_message
[{reqId}] {exception_url}   PHP Warning: Array to string conversion
FrameLocationCall
from/srv/mediawiki/php-1.45.0-wmf.2/includes/media/FormatMetadata.php(1221)
#0[internal function]MediaWiki\Exception\MWExceptionHandler::handleError(int, string, string, int)
#1/srv/mediawiki/php-1.45.0-wmf.2/includes/media/FormatMetadata.php(1221)implode(string, array)
#2/srv/mediawiki/php-1.45.0-wmf.2/includes/media/ExifBitmapHandler.php(84)FormatMetadata->flattenArrayReal(array, string, bool)
#3/srv/mediawiki/php-1.45.0-wmf.2/includes/filerepo/file/File.php(841)ExifBitmapHandler->convertMetadataVersion(array, int)
#4/srv/mediawiki/php-1.45.0-wmf.2/includes/api/ApiQueryImageInfo.php(635)MediaWiki\FileRepo\File\File->convertMetadataVersion(array, string)
#5/srv/mediawiki/php-1.45.0-wmf.2/includes/api/ApiQueryImageInfo.php(238)MediaWiki\Api\ApiQueryImageInfo::getInfo(MediaWiki\FileRepo\File\LocalFile, array, MediaWiki\Api\ApiResult, array, array)
#6/srv/mediawiki/php-1.45.0-wmf.2/includes/api/ApiQuery.php(739)MediaWiki\Api\ApiQueryImageInfo->execute()
#7/srv/mediawiki/php-1.45.0-wmf.2/includes/api/ApiMain.php(2010)MediaWiki\Api\ApiQuery->execute()
#8/srv/mediawiki/php-1.45.0-wmf.2/includes/api/ApiMain.php(948)MediaWiki\Api\ApiMain->executeAction()
#9/srv/mediawiki/php-1.45.0-wmf.2/includes/api/ApiMain.php(919)MediaWiki\Api\ApiMain->executeActionWithErrorHandling()
#10/srv/mediawiki/php-1.45.0-wmf.2/includes/api/ApiEntryPoint.php(152)MediaWiki\Api\ApiMain->execute()
#11/srv/mediawiki/php-1.45.0-wmf.2/includes/MediaWikiEntryPoint.php(198)MediaWiki\Api\ApiEntryPoint->execute()
#12/srv/mediawiki/php-1.45.0-wmf.2/api.php(44)MediaWiki\MediaWikiEntryPoint->run()
#13/srv/mediawiki/w/api.php(3)require(string)
#14{main}
Impact

Low, seems to happen for one specific file (see URI)

Notes

T297403: [M] FormatMetadata: PHP Notice: Array to string conversion was similar.

Details

Request URL
https://commons.wikimedia.org/w/api.php?action=query&format=php&iilimit=500&iiprop=timestamp|user|url|size|sha1|metadata&iiurlwidth=2048&prop=imageinfo&titles=File:Etosha_National_Park_(53346730853).jpg
Related Changes in Gerrit:

Event Timeline

This happens because of:

[LocationCreated] => Array
    (
        [0] => Array
            (
                [GPSAltitude] => 105831/100
            )

        [1] => Array
            (
                [GPSLatitude] => -19.045895
            )

        [2] => Array
            (
                [GPSLongitude] => 16.236805
            )

    )

Possibly originating from xmp iptc

exiv2 -p a  /Users/hartman/Downloads/Etosha_National_Park_\(53346730853\).jpg
Exif.Image.ImageDescription                  Ascii      37  Driving to Onguma - oryx and the pan
Exif.Image.Make                              Ascii       5  SONY
Exif.Image.Model                             Ascii       9  ILCE-7M4
Exif.Image.XResolution                       Rational    1  300
Exif.Image.YResolution                       Rational    1  300
Exif.Image.ResolutionUnit                    Short       1  duim
Exif.Image.Software                          Ascii      20  Capture One Windows
Exif.Image.DateTime                          Ascii      20  2023:11:21 12:43:35
Exif.Image.Artist                            Ascii      17  Graeme Churchard
Exif.Image.ReferenceBlackWhite               Rational    6  0/1 255/1 128/1 128/1 128/1 128/1
Exif.Image.Copyright                         Ascii      22  Graeme Churchard 2023
Exif.Image.ExifTag                           Long        1  368
Exif.Photo.ExposureTime                      Rational    1  1/640 s
Exif.Photo.FNumber                           Rational    1  F5.6
Exif.Photo.ExposureProgram                   Short       1  Diafragmavoorkeur
Exif.Photo.ISOSpeedRatings                   Short       1  100
Exif.Photo.SensitivityType                   Short       1  2
Exif.Photo.RecommendedExposureIndex          Long        1  100
Exif.Photo.ExifVersion                       Undefined   4  2.32
Exif.Photo.DateTimeOriginal                  Ascii      20  2023:10:14 11:20:36
Exif.Photo.DateTimeDigitized                 Ascii      20  2023:10:14 11:20:36
Exif.Photo.OffsetTime                        Ascii       7  +00:00
Exif.Photo.OffsetTimeOriginal                Ascii       7  +01:00
Exif.Photo.OffsetTimeDigitized               Ascii       7  +01:00
Exif.Photo.ShutterSpeedValue                 SRational   1  1/640 s
Exif.Photo.ApertureValue                     Rational    1  F5.6
Exif.Photo.BrightnessValue                   SRational   1  10.1734
Exif.Photo.ExposureBiasValue                 SRational   1  0 EV
Exif.Photo.MaxApertureValue                  Rational    1  F5.6
Exif.Photo.MeteringMode                      Short       1  Multi-segmenten
Exif.Photo.LightSource                       Short       1  Onbekend
Exif.Photo.Flash                             Short       1  Nee
Exif.Photo.FocalLength                       Rational    1  400.0 mm
Exif.Photo.UserComment                       Undefined  44  charset=Ascii Driving to Onguma - oryx and the pan
Exif.Photo.PixelXDimension                   Short       1  6560
Exif.Photo.PixelYDimension                   Short       1  4373
Exif.Photo.FileSource                        Undefined   1  Digitale fotocamera
Exif.Photo.SceneType                         Undefined   1  Direct gefotografeerd
Exif.Photo.CustomRendered                    Short       1  Normaal proces
Exif.Photo.ExposureMode                      Short       1  Automatisch
Exif.Photo.WhiteBalance                      Short       1  Automatisch
Exif.Photo.DigitalZoomRatio                  Rational    1  1.0
Exif.Photo.FocalLengthIn35mmFilm             Short       1  400.0 mm
Exif.Photo.SceneCaptureType                  Short       1  Standaard
Exif.Photo.Contrast                          Short       1  Normaal
Exif.Photo.Saturation                        Short       1  Normaal
Exif.Photo.Sharpness                         Short       1  Normaal
Exif.Photo.LensSpecification                 Rational    4  400mm F5.6
Exif.Photo.LensModel                         Ascii      48  Sony FE 100-400mm F4.5-5.6 GM OSS (SEL100400GM)
Exif.Photo.CompositeImage                    Short       1  Onbekend
Exif.Image.GPSTag                            Long        1  1090
Exif.GPSInfo.GPSVersionID                    Byte        4  2.2.0.0
Exif.GPSInfo.GPSLatitudeRef                  Ascii       2  Zuid
Exif.GPSInfo.GPSLatitude                     Rational    3  19 deg 2' 45.22"
Exif.GPSInfo.GPSLongitudeRef                 Ascii       2  Oost
Exif.GPSInfo.GPSLongitude                    Rational    3  16 deg 14' 12.50"
Exif.GPSInfo.GPSAltitudeRef                  Byte        1  Boven zeeniveau
Exif.GPSInfo.GPSAltitude                     Rational    1  1058.3 m
Exif.GPSInfo.GPSTimeStamp                    Rational    3  09:20:36
Exif.GPSInfo.GPSMapDatum                     Ascii       7  WGS-84
Exif.GPSInfo.GPSDestLatitudeRef              Ascii       2  Zuid
Exif.GPSInfo.GPSDestLatitude                 Rational    3  19 deg 2' 45.22"
Exif.GPSInfo.GPSDestLongitudeRef             Ascii       2  Oost
Exif.GPSInfo.GPSDestLongitude                Rational    3  16 deg 14' 12.50"
Exif.GPSInfo.GPSDateStamp                    Ascii      11  2023:10:14
Exif.Thumbnail.Compression                   Short       1  JPEG (oud-stijl)
Exif.Thumbnail.XResolution                   Rational    1  72
Exif.Thumbnail.YResolution                   Rational    1  72
Exif.Thumbnail.ResolutionUnit                Short       1  duim
Exif.Thumbnail.JPEGInterchangeFormat         Long        1  1506
Exif.Thumbnail.JPEGInterchangeFormatLength   Long        1  2001
Iptc.Envelope.CharacterSet                   String      3
Iptc.Envelope.ModelVersion                   Short       1  4
Iptc.Application2.RecordVersion              Short       1  4
Iptc.Application2.Keywords                   String      6  Halali
Iptc.Application2.Keywords                   String      6  Kunene
Iptc.Application2.Keywords                   String      3  NAM
Iptc.Application2.Keywords                   String      7  Namibia
Iptc.Application2.Keywords                   String     21  SONY ILCE-7M4ilce-7m4
Iptc.Application2.Keywords                   String     10  14:10:2023
Iptc.Application2.Keywords                   String      4  2023
Iptc.Application2.Keywords                   String     15  Namibia  Halali
Iptc.Application2.DateCreated                Date        8  2023-10-14
Iptc.Application2.TimeCreated                Time       11  11:20:36+01:00
Iptc.Application2.DigitizationDate           Date        8  2023-10-14
Iptc.Application2.DigitizationTime           Time       11  11:20:36+01:00
Iptc.Application2.Byline                     String     16  Graeme Churchard
Iptc.Application2.SubLocation                String      6  Halali
Iptc.Application2.ProvinceState              String      6  Kunene
Iptc.Application2.CountryCode                String      3  NAM
Iptc.Application2.CountryName                String      7  Namibia
Iptc.Application2.Copyright                  String     21  Graeme Churchard 2023
Iptc.Application2.Caption                    String     36  Driving to Onguma - oryx and the pan
Iptc.Application2.ObjectName                 String     20  Etosha National Park
Xmp.iptc.CountryCode                         XmpText     3  NAM
Xmp.iptc.Location                            XmpText     6  Halali
Xmp.iptcExt.LocationCreated                  XmpText     0  type="Bag"
Xmp.iptcExt.LocationCreated[1]               XmpText     0  type="Struct"
Xmp.iptcExt.LocationCreated[1]/exif:GPSAltitude XmpText    10  105831/100
Xmp.iptcExt.LocationCreated[1]/exif:GPSLatitude XmpText    10  19,2.7537S
Xmp.iptcExt.LocationCreated[1]/exif:GPSLongitude XmpText    11  16,14.2083E
Xmp.iptcExt.LocationShown                    XmpText     0  type="Bag"
Xmp.iptcExt.LocationShown[1]                 XmpText     0  type="Struct"
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:CountryCode XmpText     3  NAM
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:CountryName XmpText     7  Namibia
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:ProvinceState XmpText     6  Kunene
Xmp.iptcExt.LocationShown[1]/Iptc4xmpExt:Sublocation XmpText     6  Halali
Xmp.iptcExt.LocationShown[1]/exif:GPSAltitude XmpText    10  105831/100
Xmp.iptcExt.LocationShown[1]/exif:GPSLatitude XmpText    10  19,2.7537S
Xmp.iptcExt.LocationShown[1]/exif:GPSLongitude XmpText    11  16,14.2083E
Xmp.aux.FlashCompensation                    XmpText     4  0/10
Xmp.aux.Lens                                 XmpText    47  Sony FE 100-400mm F4.5-5.6 GM OSS (SEL100400GM)
Xmp.aux.LensInfo                             XmpText    39  4000/10 4000/10 70475/12594 70475/12594
Xmp.dc.creator                               XmpSeq      1  Graeme Churchard
Xmp.dc.description                           LangAlt     1  lang="x-default" Driving to Onguma - oryx and the pan
Xmp.dc.rights                                LangAlt     1  lang="x-default" Graeme Churchard 2023
Xmp.dc.subject                               XmpBag      8  Halali, Kunene, NAM, Namibia, SONY ILCE-7M4ilce-7m4, 14:10:2023, 2023, Namibia  Halali
Xmp.dc.title                                 LangAlt     1  lang="x-default" Etosha National Park
Xmp.exif.ApertureValue                       XmpText    10  F5.6
Xmp.exif.BrightnessValue                     XmpText     8  10.1734
Xmp.exif.Contrast                            XmpText     1  Normaal
Xmp.exif.CustomRendered                      XmpText     1  Normaal proces
Xmp.exif.DateTimeOriginal                    XmpText    19  2023:10:14 11:20:36
Xmp.exif.DigitalZoomRatio                    XmpText     3  1/1
Xmp.exif.ExifVersion                         XmpText     4  2.32
Xmp.exif.ExposureBiasValue                   XmpText     3  0 EV
Xmp.exif.ExposureMode                        XmpText     1  Automatisch
Xmp.exif.ExposureProgram                     XmpText     1  Diafragmavoorkeur
Xmp.exif.ExposureTime                        XmpText     5  1/640
Xmp.exif.FNumber                             XmpText     4  F5.6
Xmp.exif.FileSource                          XmpText     1  Digitale fotocamera
Xmp.exif.Flash                               XmpText     0  type="Struct"
Xmp.exif.Flash/exif:Fired                    XmpText     5  False
Xmp.exif.Flash/exif:Function                 XmpText     5  False
Xmp.exif.Flash/exif:Mode                     XmpText     1  2
Xmp.exif.Flash/exif:RedEyeMode               XmpText     5  False
Xmp.exif.Flash/exif:Return                   XmpText     1  0
Xmp.exif.FocalLength                         XmpText     5  400.0 mm
Xmp.exif.FocalLengthIn35mmFilm               XmpText     3  400
Xmp.exif.GPSAltitude                         XmpText    10  105831/100
Xmp.exif.GPSAltitudeRef                      XmpText     1  Boven zeeniveau
Xmp.exif.GPSDestLatitude                     XmpText    10  19,2.7537S
Xmp.exif.GPSDestLongitude                    XmpText    11  16,14.2083E
Xmp.exif.GPSLatitude                         XmpText    10  19,2.7537S
Xmp.exif.GPSLongitude                        XmpText    11  16,14.2083E
Xmp.exif.GPSMapDatum                         XmpText     6  WGS-84
Xmp.exif.GPSTimeStamp                        XmpText    19  2023:10:14 09:20:36
Xmp.exif.GPSVersionID                        XmpText     7  2.2.0.0
Xmp.exif.ISOSpeedRatings                     XmpSeq      1  100
Xmp.exif.LightSource                         XmpText     1  Onbekend
Xmp.exif.MaxApertureValue                    XmpText    10  40761/8200
Xmp.exif.MeteringMode                        XmpText     1  Multi-segmenten
Xmp.exif.PixelXDimension                     XmpText     4  6560
Xmp.exif.PixelYDimension                     XmpText     4  4373
Xmp.exif.Saturation                          XmpText     1  Normaal
Xmp.exif.SceneCaptureType                    XmpText     1  Standaard
Xmp.exif.SceneType                           XmpText     1  Direct gefotografeerd
Xmp.exif.Sharpness                           XmpText     1  Normaal
Xmp.exif.ShutterSpeedValue                   XmpText    10  1/640 s
Xmp.exif.UserComment                         LangAlt     1  lang="x-default" Driving to Onguma - oryx and the pan
Xmp.exif.WhiteBalance                        XmpText     1  Automatisch
Xmp.exifEX.CompositeImage                    XmpText     1  0
Xmp.exifEX.InteroperabilityIndex             XmpText     3  R98
Xmp.exifEX.LensModel                         XmpText    47  Sony FE 100-400mm F4.5-5.6 GM OSS (SEL100400GM)
Xmp.exifEX.LensSpecification                 XmpSeq      4  400/1, 400/1, 70475/12594, 70475/12594
Xmp.exifEX.RecommendedExposureIndex          XmpText     3  100
Xmp.exifEX.SensitivityType                   XmpText     1  2
Xmp.lr.hierarchicalSubject                   XmpBag      8  Halali, Kunene, NAM, Namibia, SONY ILCE-7M4ilce-7m4, 14:10:2023, 2023, Namibia  Halali
Xmp.photoshop.Country                        XmpText     7  Namibia
Xmp.photoshop.DateCreated                    XmpText    25  2023-10-14T11:20:36+01:00
Xmp.photoshop.LegacyIPTCDigest               XmpText    32  799A9F93B87D4F6DC41C8B20185E26E1
Xmp.photoshop.State                          XmpText     6  Kunene
Xmp.tiff.Artist                              XmpText    16  Graeme Churchard
Xmp.tiff.Compression                         XmpText     1  6
Xmp.tiff.Copyright                           LangAlt     1  lang="x-default" Graeme Churchard 2023
Xmp.tiff.ImageDescription                    LangAlt     1  lang="x-default" Driving to Onguma - oryx and the pan
Xmp.tiff.Make                                XmpText     4  SONY
Xmp.tiff.Model                               XmpText     8  ILCE-7M4
Xmp.tiff.ReferenceBlackWhite                 XmpSeq      6  0/1, 255/1, 128/1, 128/1, 128/1, 128/1
Xmp.tiff.ResolutionUnit                      XmpText     1  duim
Xmp.tiff.Software                            XmpText    19  Capture One Windows
Xmp.tiff.XResolution                         XmpText     5  300
Xmp.tiff.YCbCrCoefficients                   XmpSeq      3  299/1000, 587/1000, 57/500
Xmp.tiff.YCbCrPositioning                    XmpText     1  Cosited
Xmp.tiff.YCbCrSubSampling                    XmpSeq      2  2, 1
Xmp.tiff.YResolution                         XmpText     5  300
Xmp.xmp.CreateDate                           XmpText    25  2023-10-14T11:20:36+01:00
Xmp.xmp.CreatorTool                          XmpText    19  Capture One Windows
Xmp.xmp.MetadataDate                         XmpText    25  2023-11-21T12:43:35+00:00
Xmp.xmp.ModifyDate                           XmpText    25  2023-11-21T12:43:35+00:00
Xmp.xmpMM.DocumentID                         XmpText    44  xmp.did:bc8affdf-c91f-4baf-8ca1-38f6e3375c21
Xmp.xmpMM.InstanceID                         XmpText    44  xmp.iid:184a42ff-9614-40d9-9950-84c1748d6c01
Xmp.xmpMM.OriginalDocumentID                 XmpText    44  xmp.did:bc8affdf-c91f-4baf-8ca1-38f6e3375c21

LocationShown, which is similar to LocationCreated is specifically unset in ExifBitmapHandler::convertMetadataVersion line 78.

Change #1192121 had a related patch set uploaded (by TheDJ; author: TheDJ):

[mediawiki/core@master] Metadata: ignore LocationCreated, similar to LocationShown

https://gerrit.wikimedia.org/r/1192121

I've done the quick way out here, but i'm concerned that we might see more of these..

If i look at https://exiv2.org/tags-xmp-iptcExt.html there are quite a few XmpBag types, so i'm wondering if all of these are arrays' of single item objects in our xmp results and if these should not be converted to being a single associative array/object, before being passed to Mediawiki's metadata layer ??? Or is that what normally happens and is this particular file just have a broken xmpBag ?

@Bawolff considering you recently looked at xmp again, perhaps you have some insight ?

Change #1192121 merged by jenkins-bot:

[mediawiki/core@master] Metadata: ignore LocationCreated, similar to LocationShown

https://gerrit.wikimedia.org/r/1192121

Change #1192172 had a related patch set uploaded (by Reedy; author: TheDJ):

[mediawiki/core@REL1_39] Metadata: ignore LocationCreated, similar to LocationShown

https://gerrit.wikimedia.org/r/1192172

Change #1192173 had a related patch set uploaded (by Reedy; author: TheDJ):

[mediawiki/core@REL1_43] Metadata: ignore LocationCreated, similar to LocationShown

https://gerrit.wikimedia.org/r/1192173

Change #1192174 had a related patch set uploaded (by Reedy; author: TheDJ):

[mediawiki/core@REL1_44] Metadata: ignore LocationCreated, similar to LocationShown

https://gerrit.wikimedia.org/r/1192174

Change #1192172 merged by jenkins-bot:

[mediawiki/core@REL1_39] Metadata: ignore LocationCreated, similar to LocationShown

https://gerrit.wikimedia.org/r/1192172

Change #1192173 merged by jenkins-bot:

[mediawiki/core@REL1_43] Metadata: ignore LocationCreated, similar to LocationShown

https://gerrit.wikimedia.org/r/1192173

Change #1192174 merged by jenkins-bot:

[mediawiki/core@REL1_44] Metadata: ignore LocationCreated, similar to LocationShown

https://gerrit.wikimedia.org/r/1192174