2014-05-06 22 views
6

Tôi đã đọc mọi thứ tôi có thể về lỗi này mà không thể tìm thấy giải pháp nào.PHP Cảnh báo: DOMDocument :: load(): Cảnh báo I/O: không tải được đối tượng bên ngoài

Tôi có một trang đơn giản mà trông như thế này:

$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(); 
} 

tôi nhận được ba lần trong số bốn, ngẫu nhiên lỗi này:

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

Khi tôi khởi động lại Apache, kịch bản hoạt động tốt cho 5 phút, sau đó lỗi bắt đầu xuất hiện.

Tệp XML có trọng lượng 595 kB, hiện diện và có thể đọc được.

Điều gì có thể là vấn đề?

+0

gì 'var_dump (file_exists ($ xmlfile)); 'trở về? –

+0

thử: chmod 777 /var/www/marees.xml –

+0

Tôi đã thử chmod 777, cùng một kết quả (tệp đã có thể đọc/ghi bởi www-data) 'var_dump (file_exists ($ xmlfile));' trả về luôn luôn: bool (true) (ngay cả khi có lỗi trong tải xmlfile hay không) – MichaelED17

Trả lời

10

thêm lệnh này để phía trên cùng của kịch bản của bạn:

libxml_disable_entity_loader(false); 

Để biết thêm chi tiết, xem this link.

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

Các function declaration mang theo nó một tham số tùy chọn đặt tên $options nơi:

options
Bitwise OR of the libxml option constants .

Việc sử dụng các LIBXML_NOWARNING liên tục giải quyết vấn đề này cho tôi:

$ent->load($xmlfile, LIBXML_NOWARNING); 
Các vấn đề liên quan