http_request() がうまくいかないことがある。

  • ページ: BugTrack
  • 投稿者: 閑舎
  • 優先順位: 重要
  • 状態: 完了
  • カテゴリー: 本体バグ
  • 投稿日: 2004-05-17 (月) 14:09:27
  • バージョン:

メッセージ

amazonプラグインで http_request() を使って画像ファイルを取り込もうとしたところ、Linux のディストリビューションによっては不完全になります(たぶんテキストになっている)。

皆さんの環境ではどうですか?

<?php
/////////////////////////////////////////////////
function plugin_zzz_inline() {
  $aryargs = func_get_args();
  if ($aryargs[0] == 'proxy')
    $rc = http_request("http://images-jp.amazon.com/images/P/B00008WJ2I.09.MZZZZZZZ.jpg");
  else
    $rc["data"] = amazon_getfile("http://images-jp.amazon.com/images/P/B00008WJ2I.09.MZZZZZZZ.jpg");
  amazon_savefile(CACHE_DIR . "ZZZ.jpg", $rc["data"]);
  return "<a href='./cache/ZZZ.jpg'>image</a>";
}
function amazon_savefile($file, $body) {
  $fp = fopen($file, "wb");
  if (! $fp) return false;
  fwrite($fp, $body);
  fclose ($fp);
  return true;
}
function amazon_getfile($file) {
  $fp = fopen($file, "rb");
  if (! $fp) return '';
  $body = '';
  while (!feof($fp)) $body .= fread($fp, 4096);
  fclose ($fp);
  return $body;
}
?>

がダイジェストです。 これを zzz.inc.php としてプラグインに登録して試してもらえませんか。 呼び出しは

&zzz();

が http_request() を使わない場合、

&zzz(proxy);

が使う場合です。今までのところ、

環境proxy環境http_request使用proxy環境http_request不使用
Debian PHP4.1.2
Vine 2.6 PHP4.2.2

および

環境一般環境http_request使用一般環境http_request不使用
Debian PHP4.1.2
Vine 2.6 PHP4.2.2×

のような感じです。 Debian は PukiWiki 1.4.2、Vine は PukiWiki 1.4rc4 というのによるのかもしれません。


  • Vine に PukiWiki 1.4.2 をセットして http_request を使った場合、うまくいきました(一般環境)。どうも1.4rc4の不具合のようですね。 -- 閑舎 2004-05-17 (月) 14:41:34
  • proxy.phpのversion 1.3で
    $response .= fgets($fp,4096);
    $response .= fread($fp,4096);
    に変わってますから、これ以降でOKなんだと思います。 -- 2004-05-17 (月) 16:01:42
    • なるほど、それですね。1.4rc4 でなく 1.4.3 を使うようにします。ありがとうございました。 -- 閑舎 2004-05-17 (月) 16:44:37

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-02-12 (木) 22:04:18
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.164 sec.

OSDN