[RISOLTO] Notifica di scarto: Content is not allowed in prolog

In questi giorni ho avuto tantissimi problemi, uno dei quali abbastanza anomalo, “Content is not allowed in prolog” durante la fase di ricezione notifica da parte di Sdi.

Questo errore avviene quando all’inizio dell’XML che si invia è presente il BOM (ovvero il file è in formato UTF-8 with BOM).

Per risolvere questo ho modificato:

$fileSdIAccoglienza = new \stdClass();
$fileSdIAccoglienza->NomeFile = basename($fattura);
$fileSdIAccoglienza->File = base64_encode(file_get_contents($fattura));

in

$fileSdIAccoglienza = new \stdClass();
$fileSdIAccoglienza->NomeFile = $filename;
$str = file_get_contents($filePath);
$str = str_replace("\xEF\xBB\xBF",'',$str);
$fileSdIAccoglienza->File = $str;

Sul server ho PHP 7.0 (anche con PHP 7.2 dava lo stesso problema).

Se qualcuno con PHP dovesse avere lo stesso problema, questo potrebbe aiutare.