PHP simplexml_load_fileを使用して「I/O warning : failed to load external entity」というエラーと、
PHP simplexml_load_stringを使用して「Entity: line 1: parser error : Start tag expected, ‘<’ not found」というエラーについての対処方法です。
目次
PHP simplexml_load_fileエラー「I/O warning failed to load」対処方法
simplexml_load_fileはファイルの読み込み
simplexml_load_fileを利用して文字列を読み込もうとしていませんか?
それではエラーが出てしまいますので、文字列を読み込む関数を利用します。
1.simplexml_load_fileではなく、simplexml_load_stringと、file_get_contentsを利用する。
不適切な場所にダブルクォート
ファイルの読み込み時にダブルクォートによってエラーが出る場合があります。
読み込み元と読込先の文字コードなど意外な落とし穴もありますので、もう一度記述を再確認します。
2.simplexml_load_fileまでの記述で「“」(ダブルクォート)の扱いを見直す。
厄介なのは読み込み先のエラー
自分の管理下にないファイルだった場合は、お手上げなのが、読込先のファイル自体の記述ミスです。
主にファイルのメタ情報を記述するヘッダ部分に致命的なミスコードがあると、このエラーを出す場合もありますので、確認が必要です。
3.エラーを吐くxml自体のヘッダや記述の間違い。
PHP simplexml_load_stringエラー 「Entity: line 1: parser error : Start tag expected, ‘<' not found」対処方法
PHPでxmlを扱う為にsimplexml_load_stringを利用した時の
「Entity: line 1: parser error : Start tag expected, ‘<’ not found」
というエラーの対処方法メモ
原因はxml文字列として読み込まれていない
つまり、指定変数などにxmlが格納されていない場合です。
xmlが記述されたファイルを指定している場合に多い
xmlのファイルを読み込もうとしていませんか?
simplexml_load_stringでは、ファイルを読み込めません。
simplexml_load_stringエラー対処方法
NG例
$xml = simplexml_load_string("$path");
OK例
$xml = simplexml_load_string(file_get_contents("$path"));
file_get_contentsでまずファイルを読み込むことで解決
PHPをまるで翼(ウイング)が生えたようにコーディングできる日はくるのでしょうか。日々精進です。
まとめ
simplexml_load_fileやimplexml_load_stringを使えば驚くほど簡単にxmlファイルを処理できますが、呼び出し時のコーディングに注意するだけでなく、読み込み先のファイルの整合性もきちんと把握しておく必要がありますので、エラー分岐をきちんと当てておくことが重要ですね。
今日も知識欲は止まらない。
コメント
ずっと、悩んでたんですが、これでうまくいきました。
ありがとうございました。