【问题标题】:SimpleHTMLDom returns 500 error on printing outputSimpleHTMLDom 在打印输出时返回 500 错误
【发布时间】:2018-09-10 04:39:40
【问题描述】:

在尝试打印 simplehtmldom 的输出时,它给了我 500 错误。我尝试了以下方法,但错误相同。

  • 方法一

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

    print_r($html);

    在阅读了对其他问题的回复后,我检查了 allow_url_fopen 是否工作正常。

  • 方法二

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

    print_r($html);

    这可行,但是当我用以下代码解析它时,再次出现 500 错误。

    $object = new simple_html_dom();

    $object->加载($html);

    var_dump($object);

  • 方法3

    然后作为最后的手段,我想我应该尝试使用 curl 然后解析。所以我使用 curl 并确保 curl 正常工作,我在它工作时打印了输出。但是当我再次解析到 simplehtmldom 时,打印输出时出现 500 错误。

[2018 年 9 月 8 日星期六 21:26:19.456961] [:error] [pid 703804] ModSecurity: 输出过滤器:响应体太大(超过 404800001 的限制,总计 未指定)。

我将限制提高了近 100 倍,但仍然是同样的错误。

【问题讨论】:

  • 这看起来像是某种递归,文档大小为 404 MB,看起来不像 HTML 文档...
  • 试试$object->load($html); ob_start();var_dump($object);$len=strlen(ob_get_clean());var_dump($len); ...
  • @hanshenrik 不幸的是同样的 500 错误
  • @arkascha 打得我好。我的意思是我也下载了一个 simplehtmldom 的新文件,以防我因为某种原因弄乱了我的原始文件,但仍然是同样的错误。
  • @SaadBashir 不,我认为这不是同一个错误,这次错误日志是怎么说的?

标签: php curl fopen file-get-contents simple-html-dom


【解决方案1】:

错误消息表明 ModSecurity 正在抱怨 响应正文太大。这并不意味着使用 Simple HTML DOM 库加载 HTML 有问题,它与您的代码生成的响应大小有关(print_rvar_dump 部分)。我猜这是因为您正在加载的 HTML 的结构需要大量嵌套对象来表示 DOM 树,因此当您尝试使用 print_rvar_dump 输出完整结构时,响应会变得太大。

您可以通过简单地打印页面的纯 HTML 来验证 HTML 是否已加载和解析(使用 print 而不是 print_r 来打印 simple_html_dom 对象):

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

print($html);

您将看到 HTML 被正确检索,并且您可以使用 $html 对象以您期望使用 simple_html_dom 对象的方式操作 DOM。

如果您想更改 ModSecurity 的输出限制以便生成更大的响应,请查看以下问题:Mod Security response/request body size?

【讨论】:

  • 谢谢@Nima 使用 print 带来的输出。现在将处理您关于 Mod Security 的答案的第二部分,让我们看看情况如何! :D
  • 尝试将体型增加近 100 倍,但没有成功
  • 正如另一个问题的答案所说,默认响应大小为 512K,因此 100 次可能还不够,它还说有 1GB 的硬限制。
  • 我之前的限制是 3.86M,我增加到 386M。但同样的错误仍然存​​在
  • 要检查问题的原因是否是响应限制,我建议您选择最大可能限制,即 1GB。如果它有效,你可以调整它。但我很好奇,你为什么需要print_r这个对象呢?
猜你喜欢
  • 1970-01-01
  • 2014-01-03
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 2017-07-31
相关资源
最近更新 更多