Ошибка возврата страницы PHP на simplexml print_r
-
22-07-2019 - |
Вопрос
Проблема возникает только с одним файлом, когда я пытаюсь выполнить метод DocumentDOM/SimpleXML, поэтому кажется, что проблема связана с этим файлом.Понятия не имею, что это может быть.
Если я сделаю следующее:
$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
print_r($xml);
в Chrome я получаю сообщение об ошибке «Страница недоступна».В Firefox я ничего не получаю.
Если я сделаю то же самое, но с «test2.html», я получу распечатку, как и ожидалось.
Если я попробую то же самое, но сделаю это следующим образом:
$file = "test1.html";
$data = file_get_contents($file)
$dom = DOMDocument::loadHTML($data);
$xml = simplexml_import_dom($dom);
print_r($xml);
У меня та же проблема.
Если я закомментирую строку print_r, Chrome перейдет от «Страница недоступна» к пустой.
Я изменил разрешения на 777, если это проблема, исправления не будет.
Я попробовал просто вывести содержимое HTML, никаких проблем.
Есть какие-нибудь подсказки относительно того, почему а) Chrome это делает и б) почему я не получаю никаких полезных результатов?
Обновлять:
Если я вставлю:$file = "test1.html";$dom = DOMDocument::loadHTMLFile($file);if (! $ dom) {echo "нет нагрузки!";} else {$ xml = simplexml_import_dom ($ dom);print_r($xml);}
У меня та же проблема.Если я вставлю:
$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
if(!$dom) {
echo "No Load!";
}
else {
echo "Load!";
}
Я получаю "загрузку!" Вывод, что означает, что метод DOM не должен быть проблемой (?)
Я попробую тот же самый тест с файлом simplexml.
Обновление2:
Если я сделаю это:
У меня та же проблема.Если я вставлю:
$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
if(!$xml) {
echo "No Load!";
}
else {
echo "Load!";
}
Я получаю "загрузку!" Но если я сделаю:
$file = "test1.html";
$dom = DOMDocument::loadHTMLFile($file);
$xml = simplexml_import_dom($dom);
if(!$xml) {
echo "No Load!";
}
else {
echo "Load!";
print_r($xml);
}
Я получаю ошибку.Наконец я заметил, что у меня есть возможность просмотреть ошибку в Chrome:
Error 324 (net::ERR_EMPTY_RESPONSE): Unknown error.
Неприятный html-файл имеет размер 288 КБ.Может ли это быть проблемой?Если да, то как бы я к этому приспособился?
Последнее обновление:
Очень странно.Я могу использовать методы и функции объекта (например, simplexml или domdocument), поэтому я могу делать такие вещи, как xpath, для удаления или анализа HTML и т. д.В некоторых случаях (небольшие результаты) он может отображать результаты, но для больших объектов (показать все диапазоны) он терпит неудачу таким же образом.
Итак, поскольку конечный результат, я думаю, будет соответствовать этим параметрам, я ДОЛЖЕН быть в порядке (я думаю).
Но любое реальное решение приветствуется.
Решение
- Включите отчеты об ошибках:
error_reporting(E_ALL);
в первой строке вашего PHP-кода. - Проверьте ограничение памяти вашей конфигурации PHP:
memory_limit
в соответствующем php.ini - В чем разница между test1.html и test2.html?Возможно, test1.html неправильно сформирован.
Другие советы
DocumentDOM и/или SimpleXML могут выйти из строя, если документ имеет неверный формат.Попробуйте что-то вроде:
$dom = DOMDocument::loadHTMLFile($file);
if (!$dom) {
echo 'Loading file failed';
exit;
}
$xml = simplexml_import_dom($dom);
if (!$xml) {
...
}
Если создание $dom сработало, преобразование в $xml также должно работать, но все равно убедитесь.
Редактировать:Как сказал Гериг, убедитесь, что отчеты об ошибках включены, это должно сделать очевидным, где процесс завершается сбоем.