2016-10-24 59 views
2

約60MBのデータを含むURLからxmlコンテンツをロードしようとしています。ライブラリに組み込まれたシンプルなXMLを使用してこれを行うと、次のエラーが発生します。LoadXMLファイルが大きすぎます

PHP Warning: DOMDocument::loadXML(): internal error: Huge input lookup in Entity, line: 845125 

スクリプトが停止しています。どうしましたか?私はこれにどのように対処できますか?

私が使用してサンプルURL:

http://foo.com/feed.xml 
+0

PHPのメモリ制限を増やすか、XMLで何をしたいかによって、完全なXMLオブジェクトではなく、転送専用のリーダーを試してください – RiggsFolly

+0

http://stackoverflow.com/questions/911663/parsing-huge- xml-files-in-php –

+0

ターゲットxmlにエラーがあり、ブラウザがそれをロードしませんでした。 – Mohammad

答えて

1

のlibxml2の変更履歴が含まれている入力バッファリングに関連すると思われる、 "608773はxmlGROWで不足しているチェック(ダニエルVeillard)を追加します"。注意libxml2の内部については何も知りませんが、2.7.7で修正された2.7.6のバグが気になるようです。

simplexml_load_file()を直接使用するときの動作が異なるかどうかを確認し、libxmlパーサー関連のオプションを設定してみてください。

simplexml_load_string($ xml、 'SimpleXMLElement'、LIBXML_COMPACT | LIBXML_PARSEHUGE) 具体的には、LIBXML_PARSEHUGEフラグを試してみてください。

http://php.net/manual/en/libxml.constants.php XML_PARSE_HUGEフラグは、パーサーからハードコードされた制限を緩和します。これは、ドキュメントまたはエンティティの再帰の最大深さ、テキストノードのサイズの制限などの制限に影響します。

関連する問題