Ciao a tutti... come da oggetto, ho un problema con il contenuto di una variabile.
All'interno di questa variabile viene inserito il base64 di un file (ricavato da un xml) e PHP deve processare il base64 per salvare il file nel filesystem.
Tutto va bene finchè ci sono file di piccole dimensioni (sui 10MB)... nel momento in cui però mi trovo con un file più grosso il base64 sembra venga "spezzato" dopo 9999993 caratteri.
Dico sembra perchè se dal debug vado a visualizzare il valore della variabile vedo tutta la stringa del base64.
Il problema non è nel salvataggio del file, in quanto il file viene creato e salvato correttamente, ma nella dimensione della variabile.ci sono dei limiti eventualmente da settare sul php.ini? oppure ci sono dei modi per ovviare al problema? Ho provato anche a dividere la stringa in chunks o in un array, ma il problema rimane.
Inserisco il codice che utilizzo per estrarre i dati dall'xml:
Codice PHP:
$reader = new XMLReader();
if (!$reader->open($GLOBALS['conf']['filepath'] . '/' . $xmlfile)) {
print "Error to open XML: $xmlfile\n";
} else {
while ($reader->read()) {
$name = $reader->name;
$type = $reader->nodeType;
if (($type == XMLReader::ELEMENT) && in_array($name, $allowedNodes)) {
$xml = $reader->readOuterXml();
$doc = new DOMDocument('1.0', 'UTF-8');
$xml = simplexml_import_dom($doc->importNode($reader->expand(), true));
//Altro codice per l'elaborazione
}
}
}
NB:
la variabile $allowedNodes è una variabile salvata in un file di configurazione, per cui non vedete il suo valore.
Grazie mille per le risposte