При попытке распечатать вывод 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 раз, но все та же ошибка.
попробуйте $object->load($html); ob_start();var_dump($object);$len=strlen(ob_get_clean());var_dump($len);
...
@hanshenrik, к сожалению, такая же ошибка 500
@arkascha хорошо, что меня бьет ... я имею в виду, что я тоже загрузил новый файл simplehtmldom на тот случай, если по какой-то причине я испортил свой исходный файл, но все еще та же ошибка.
@SaadBashir нет, я не думаю, что это та же ошибка, что на этот раз написано в журнале ошибок?
Сначала попробуйте заставить его работать из командной строки php. Это устранит ошибки, которые создает ваш веб-сервер.
Сообщение об ошибке указывает, что 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
попытался увеличить размер тела почти в 100 раз, но безуспешно
Как говорится в ответе на другой вопрос, размер ответа по умолчанию составляет 512 КБ, поэтому 100 раз может быть меньше, чем достаточно, и также говорится, что существует жесткий предел в 1 ГБ.
мой предыдущий лимит составлял 3,86 млн, который я увеличил до 386 млн. Но такая же ошибка сохранялась
Чтобы проверить, является ли причина проблемы ограничением ответа, я предлагаю вам установить максимально возможный предел, который составляет 1 ГБ. Если это сработало, вы можете отрегулировать это. Но мне любопытно, зачем вам вообще print_r
этот объект?
Это похоже на какую-то рекурсию, документ был бы размером 404 МБ, это не похоже на документ HTML ...