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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP でmb_send_mailが上手くい...
-
mb_send_mailでデタラメなメー...
-
XAMPPのローカル環境でメール送...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
バッチを用いたフォルダの自動移動
-
phpとaspの違いについて
-
form actionで二つ送信先を指定...
-
phpで画像がどうしても文字化け...
-
透過PNGが透過されない!!
-
PHP8を使うと、大量のWarningが...
-
index.phpって何ですか? 具体...
-
PHPで、エラーがない場合のみ画...
-
これの対応OSを教えて下さい。p...
-
ワードプレスサイト PHP8.0.25...
-
PHPからロリポップ!のメールサ...
-
PHPで複数ファイルのダウン...
-
PHPをhtmlに読み込んだファイル...
-
chmod()で所有者が変わってしまう
-
「クラス関数」「メンバ関数」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
BASP21メール送信(SMTP-AUTH認...
-
(PHP)mb_send_mailでメール送信...
-
PHP mb_send_mailが使えない
-
phpをpsqlへ接続しようとするの...
-
ローカル環境でのメール送信が...
-
VB6.0とBASP21を用いてyahooメ...
-
C# メール送信ついて困っています
-
mb_send_mailでデタラメなメー...
-
C#のメール送信について質問が...
-
項目「sendmail_path」には メ...
-
C# SmtpでYahooサーバーから送信
-
javaを使ってメールがしたい
-
PHPで外部SMTPサーバーを利用し...
-
PHP でmb_send_mailが上手くい...
-
mb_send_mailで送ったエラーメ...
-
PHP 宛先不明アドレス取得
-
edmaxで送信できなくなりました
-
iPhone 12miniってそろそろ替え...
-
少し特殊?な状況でメール送信
-
外部smtpサーバーを利用したメ...
おすすめ情報