SimpleHTMLDom возвращает ошибку 500 при выводе на печать

При попытке распечатать вывод simplehtmldom он дает мне ошибку 500. Я пробовал следовать методам, но ошибка была такой же.

  • Способ 1

    $ html = file_get_html ("http://www.google.com");

    print_r ($ html);

    Прочитав ответы на другие вопросы, я проверил, работает ли allow_url_fopen, и это так.

  • Способ 2

    $ html = file_get_contents ("http://www.google.com");

    print_r ($ html);

    Это работает, но когда я разбираю его с помощью следующего кода, снова ошибка 500.

    $ object = new simple_html_dom ();

    $ объект-> загрузка ($ html);

    var_dump ($ объект);

  • Способ 3

    Затем, в крайнем случае, я подумал, что мне стоит попробовать использовать curl, а затем выполнить синтаксический анализ. Поэтому я использовал завиток и, чтобы убедиться, что завиток работает, распечатал результат, когда он работал. Но когда я снова разобрался в simplehtmldom, ошибка 500 при печати вывода.

[Sat Sep 08 21:26:19.456961 2018] [:error] [pid 703804] ModSecurity: Output filter: Response body too large (over limit of 404800001, total not specified).

Я увеличил лимит почти в 100 раз, но все та же ошибка.

Это похоже на какую-то рекурсию, документ был бы размером 404 МБ, это не похоже на документ HTML ...

arkascha 10.09.2018 06:52

попробуйте $object->load($html); ob_start();var_dump($object);$len=strlen(ob_get_clean());var‌​_dump($len); ...

hanshenrik 10.09.2018 08:15

@hanshenrik, к сожалению, такая же ошибка 500

Saad Bashir 10.09.2018 08:21

@arkascha хорошо, что меня бьет ... я имею в виду, что я тоже загрузил новый файл simplehtmldom на тот случай, если по какой-то причине я испортил свой исходный файл, но все еще та же ошибка.

Saad Bashir 10.09.2018 08:22

@SaadBashir нет, я не думаю, что это та же ошибка, что на этот раз написано в журнале ошибок?

hanshenrik 10.09.2018 08:25

Сначала попробуйте заставить его работать из командной строки php. Это устранит ошибки, которые создает ваш веб-сервер.

pguardiario 11.09.2018 01:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
258
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сообщение об ошибке указывает, что ModSecurity жалуется на Тело ответа слишком велико. Это не означает, что что-то не так с загрузкой HTML с использованием библиотеки Simple HTML DOM, это касается размера ответа, сгенерированного вашим кодом (части print_r или var_dump). Я предполагаю, что это связано с тем, что структура загружаемого HTML-кода требует большого количества вложенных объектов для представления дерева DOM, поэтому, когда вы пытаетесь вывести полную структуру с помощью print_r или var_dump, ответ становится слишком большим.

Вы можете проверить, загружен и проанализирован HTML-код, просто распечатав простой HTML-код страницы (используйте print вместо print_r для печати объекта simple_html_dom):

$html = file_get_html("http://www.google.com");

print($html);

и вы увидите, что HTML-код получен правильно, и вы можете работать с объектом $html, чтобы управлять DOM так, как вы ожидаете работать с объектами simple_html_dom.

Если вы хотите изменить предел вывода для ModSecurity, чтобы вы могли генерировать более крупные ответы, взгляните на этот вопрос: Mod Security ответ / размер тела запроса?

Спасибо, @Nima, использование print приносит результат. Теперь займемся второй частью вашего ответа о безопасности модов и посмотрим, как это пойдет! : D

Saad Bashir 11.09.2018 07:07

попытался увеличить размер тела почти в 100 раз, но безуспешно

Saad Bashir 11.09.2018 11:33

Как говорится в ответе на другой вопрос, размер ответа по умолчанию составляет 512 КБ, поэтому 100 раз может быть меньше, чем достаточно, и также говорится, что существует жесткий предел в 1 ГБ.

Nima 11.09.2018 21:40

мой предыдущий лимит составлял 3,86 млн, который я увеличил до 386 млн. Но такая же ошибка сохранялась

Saad Bashir 12.09.2018 12:18

Чтобы проверить, является ли причина проблемы ограничением ответа, я предлагаю вам установить максимально возможный предел, который составляет 1 ГБ. Если это сработало, вы можете отрегулировать это. Но мне любопытно, зачем вам вообще print_r этот объект?

Nima 12.09.2018 12:28

Другие вопросы по теме