SimpleHTMLDom在打印输出时返回500错误

问题描述 投票:1回答:1

在尝试打印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:输出过滤器:响应体太大(超过404800001,未指定总数)。

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

php curl fopen file-get-contents simple-html-dom
1个回答
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?

© www.soinside.com 2019 - 2024. All rights reserved.