2014-05-06 17 views
6

Ho letto tutto ciò che potevo su questo errore senza essere in grado di trovare alcuna soluzione.Avviso PHP: DOMDocument :: load(): avviso I/O: impossibile caricare l'entità esterna

Ho una semplice pagina che assomiglia a questo:

$xmlfile = "/var/www/marees.xml"; //Fichier dans lequel récupérer les données 
$ent = new DOMDocument(); 
$ent->load($xmlfile); 

if(!(@$ent->load($xmlfile))) 
{ 
    echo "Unable to load : " . $xmlfile; 
    exit(); 
} 

ottengo tre volte su quattro, in modo casuale questo errore:

PHP Warning: DOMDocument::load(): I/O warning : failed to load external entity "/var/www/marees.xml" in /var/www/marees/test2.php on line 7

Quando ho riavviato Apache, lo script funziona bene per 5 minuti, quindi l'errore inizia a comparire.

Il file XML pesa 595 kB, è presente e leggibile.

Quale potrebbe essere il problema?

+0

Cosa significa 'var_dump (file_exists ($ xmlfile)); 'return? –

+0

provare: chmod 777 /var/www/marees.xml –

+0

Ho provato chmod 777, stesso risultato (il file era già leggibile/scrivibile da www-data) il 'var_dump (file_exists ($ xmlfile));' return always: bool (true) (anche se c'è un errore nel caricamento xmlfile o meno) – MichaelED17

risposta

10

aggiungere questo comando alla parte superiore dello script:

libxml_disable_entity_loader(false); 

Per maggiori dettagli si veda this link.

1
public mixed DOMDocument::load (string $filename [, int $options = 0 ]) 

La function declaration porta con sé un parametro opzionale denominato $options dove:

options
Bitwise OR of the libxml option constants .

L'utilizzo della costante LIBXML_NOWARNING risolve il problema per me:

$ent->load($xmlfile, LIBXML_NOWARNING);