![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
PHPでsimplexml_load_fileの引数に長いURLを指定すると結果が返りません。
file_get_contents でも同様です。
PHP初心者です。
ある程度の長さまで(バイト数不明)までは大丈夫です。
今日一日検索と実験をかなり行いましたが、解決できず困り果てています。
どなたかヒントやアドバイスをいただけると大変助かります。
サーバー Windows 2008 Server + IIS
PHPVer 5.3.2
【概要】
Yahooの形態素解析APIを使用するため奮闘しています。
http://developer.yahoo.co.jp/webapi/jlp/ma/v1/pa …
取得したサンプルに倣いエンコードしたテキストをURLに加え送信するのですが
A) 短いテキストだとうまくいきますが(UTF8の日本語で900文字ぐらいか)B) 長いテキストたとえばどこかのWebページのテキストすべてなどでは PHP Warningがログに残り失敗ます。
最終的には以下のようなクエリーストリングを生成し(simplexml_load_fileの引数として)送信しようとしています。が送信できていません。
http://jlp.yahooapis.jp/MAService/V1/parse?appid … app id>&results=ma&sentence=+%5BPR%5D+2010%E5%B9%B49%E6%9C%8816%E6%97%A5%28%E6%9C%A8%29+%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3+%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%
<長いので途中省略>
AA%E5%B7%A5%E4%BC%9A+10%E2%80%9012%E6%9C%88%E6%9C%9F%E3%81%AF%E8%B8%8A%E3%82%8A%E5%A0%B4%E5%85%A5%E3%82%8A%E3%81%AE%E5%85%AC%E7%AE%97%E3%81%8B+%E9%81%8A%E5%9C%92%E5%9C%B0%E3%81%AE%E3%83%87%E3%83%BC%E3%83%88%E3%80%81%E3%83%88%E3%83%83%E3%83%97%E3%81%AF%E8%A6%B3%E8%A6%A7%
【試したこと・わかったこと】
長いURLを送信しようとするとphpのログには2種類のエラーが記録される
(ア)PHP Warning: simplexml_load_file(http://jlp.yahooapis.jp <以下上記サンプルのURL続く>
(イ)PHP Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://jlp.yahooapis.jp/MAService/V1/parse?<以下上記サンプルのURL続く>
テキストを短くすると送信でき期待通りxmlが返ってくる。
上記の元URLをIEのアドレスバーに入力すると xml が正常に返ってくる
file_get_contents で同じことを行う場合も同様にエラー(上記エラー(ア)となり値が返らない
http://developer.yahoo.co.jp/sample/jlp/sample2. … で紹介されているデモサイトでも同様の問題が起きている模様。。。
http://cgi.geocities.jp/ydevnet/sample/jlp/sampl …
【関係ありそうな php.ini の現在の設定】
allow_url_fopen = On
allow_url_include = On
以上 よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
興味があったので、file_get_contentsに何文字までなら入力可能なのか調べてみました。
結果、「8193」バイトの文字列以上入力するとこけるようです。
※XAMPPのPHP5.2.3にて計測
8192は2/8/16進数的にきりのいい数値ですので、何か意味があるのでしょうかね・・・
とりあえず、しようがないので、
fsockopen関数で代替してはどうでしょう。
http://php.net/manual/ja/function.fsockopen.php
ホスト名でソケットをあけて、HTTPヘッダを送信してやるという感じです。
マニュアルのサンプルを参考にして作成してみてはいかがでしょう。
または、Zend Frameworkの「Zend_Client」や、PEARの「HTTP_Request2」などはこれをラップしたライブラリなので、もっと簡単に出来ます。
お返事が遅れてすみません。限度数、調査いただきましてたいへんありがとうございました。
おかげさまでここでの調査時間が短縮できましたこと深く御礼申し上げます。
ご指導いただいた fsockopen で悪戦苦闘しながら解決策を模索しておりましたが、今度は受け側であるYahooから切断されるようになりました。一歩進みましたがまた後退ということで、ほかの解決策を模索してみます。
PHP Notice: fwrite(): send of 8192 bytes failed with errno=10054 既存の接続はリモート ホストに強制的に切断されました。
No.2
- 回答日時:
(ア)Warning かどうかじゃなく、エラーメッセージに注目しようとは思わなかったんですか?
(イ)failed to load external entity. 外部実体の読み込みに失敗しました。
要するに、送ったけど、返事が返ってこなかったぜ、と言っている。
マニュアルはちゃんと読んだんですか?PHP は元より、Yahoo のほうも。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 船舶・クルーズ Windows10のエクスプローラにて。 1 2022/10/10 20:11
- 経済 国債をどんどん発行して、国家予算に充てれば良いという考え方が提唱されてますが…… 5 2022/10/09 19:34
- サバイバルゲーム このタイプの差し込み口ってなんの種類か分かりますか? 3 2022/07/29 15:32
- ZOZOTOWN このタイプの差し込み口ってなんの種類か分かりますか? 2 2022/07/29 15:31
- その他(パソコン・スマホ・電化製品) Google ドライブのようにXnBay ストレージ サーバのストレージスペースをコンピュータのエク 2 2023/04/28 19:09
- 工学 都市ガスの燃焼速度 3 2022/08/03 12:59
- 事件・事故 「ほぼ確実」なのでしょうか。 4 2023/08/28 22:22
- マウス・キーボード Pc切替器が動作しません。理教えてください。よろしくお願いします。 4 2023/05/10 15:43
- タレント・お笑い芸人 相席スタート山添ってYouTube出てるらしいけど 3 2023/06/08 11:54
- FX・外国為替取引 トラッキングトレードなどFX自動売買の対策 壱 2 2023/05/13 07:13
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPで外部SMTPサーバーを利用し...
-
mb_send_mailでデタラメなメー...
-
PHPでsimplexml_load_fileの引...
-
これまで遷移してきたサイト内...
-
PHPのif文でその処理を途中で抜...
-
「クラス関数」「メンバ関数」...
-
PHP8を使うと、大量のWarningが...
-
Subversionのリポジトリの削除
-
FTPコマンドでディレクトリごと...
-
fopenでファイルが開かない場合...
-
PHP file_get_contents 503 ser...
-
ファイルアップロードしたもの...
-
php で C言語のdefineマクロの...
-
バッチを用いたフォルダの自動移動
-
ファイルサイズがpost_max_size...
-
CakePHPの表示エラーについて
-
renameでのPermission deniedエ...
-
inputタグでphpを呼び出す際、...
-
呼び出し元のファイル名を取得...
-
makefile でファイルをコピーす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# メール送信ついて困っています
-
PHP mb_send_mailが使えない
-
項目「sendmail_path」には メ...
-
PHPで外部SMTPサーバーを利用し...
-
PHP でmb_send_mailが上手くい...
-
phpをpsqlへ接続しようとするの...
-
mb_send_mailで送ったエラーメ...
-
「SMTP」が「localhost」ではな...
-
mb_send_mailでデタラメなメー...
-
XAMPPのローカル環境でメール送...
-
外部smtpサーバーを利用したメ...
-
VB6.0とBASP21を用いてyahooメ...
-
BASP21メール送信(SMTP-AUTH認...
-
C#のメール送信について質問が...
-
(PHP)mb_send_mailでメール送信...
-
yahooのフリーメールでPHPでSMT...
-
PHPでsimplexml_load_fileの引...
-
PHPフォームから別ホスト経由で...
-
edmaxで送信できなくなりました
-
javaを使ってメールがしたい
おすすめ情報