* php HTTP 拡張モジュールのインストールをインストール(有効)にしているとダウンする [#b28bd9ef]

- ページ: [[BugTrack2]]
- 投稿者: 名無しさん
- 優先順位: 普通
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2007-11-15 (木) 02:14:29
- バージョン: 

** メッセージ [#q22c774a]
php HTTP 拡張モジュールをインストール(有効に)しているとpukiwikiがダウンする(空ページ)

index.phpにて、error_reporting(E_ALL)を有効にする(コメントを外す)と下記表示

Fatal error: Cannot redeclare http_request() in C:\Apache\htdocs\wiki\lib\proxy.php on line 126



[[PHP関数:http-request]] ~
[[cvs:lib/proxy.php]]

原因
 関数名が重複しているため
 http_request

回避方法
 lib/pukiwiki.php
 // require(LIB_DIR . 'proxy.php');
 のようにコメントにする
 もしくは、
 php.iniをインストールフォルダに設置する。
 もしくは
 php HTTP 拡張モジュールをあんいんすとーるする
--------
-
 if(! function_exists('http_request')) {
         require(LIB_DIR . 'proxy.php');
 }
ではダメですか? -- [[よっちい]] &new{2007-11-15 (木) 20:08:07};
-- それだけでは、ダメだと思います。&br;PukiWiki のhttp_request 関数のパラメータは、(string)$url, (string)$method という順番で始まりますが、&br;PHP のhttp_request 関数は、(int)$method , (string)$url という順番で始まるので、&br;http_request 関数を使っているamazon.inc.php やshowrss.inc.php に影響が出ます。&br;PukiWiki のをPHP にあわせる修正が必要になるかも。 --  &new{2007-11-15 (木) 21:04:40};
--- では、上記回避方法の「~をコメントにする」でもダメなわけですね。''PECLにあわせる''に1票入れときます。 -- [[よっちい]] &new{2007-11-15 (木) 23:16:51};
-- でなければ、PukiWiki 専用のhttp_request ということで、pukiwiki_http_request に改名するとか。 --  &new{2007-11-15 (木) 21:19:53};
- 仮に引数の順番を除いた 外部仕様が全く同じである というのであれば、PECLに合わせた方が無難でしょうね。辛いのは現時点までのPukiWikiだけですから。しかし実際には第三引数以降がかなり違いますから、pkwk_http_request() とでも名称変更しておくのが無難なのでしょう。仮に PECL_HTTP http_request() の仕様が PukiWiki http_request() のニーズを完全にカバーできるならば pkwk_http_request() を PECL_HTTP http_request() のラッパーとして構築する((あるならば PECL を使うようにする))とさらに美しいのだろうと思うのですが、よく比較しないと何とも言えないと思います -- [[henoheno]] &new{2007-11-15 (木) 23:40:02};
-- いずれにせよ次の一手は名称変更かなと。 -- [[henoheno]] &new{2007-11-15 (木) 23:44:56};
-- 第三引数以降を使っていたのは、TrackBack 関連だけみたいです。上に挙げた2つのプラグインは、第一引数しか使っては無いんですけど・・・。(上に引数の型を追記しておきました) --  &new{2007-11-15 (木) 23:52:31};
- 戻り値の型も違うようです(PECL版は'''string'''に対して、PukiWiki版は'''array''')。ラッパーを作るにしても、ちょっと面倒かもしれません。名称変更で様子見ですね。 -- [[よっちい]] &new{2007-11-20 (火) 20:36:11};
- ちょっとリストアップ
--lib/proxy.php
~実装本体だが、内部でリダイレクトしている。
                        // Redirect
                        return http_request($url, $method, $headers, $post, $redirect_max);
--lib/trackback.php
                :
                $result = http_request($tb_id, 'POST', '', $putdata, 2, CONTENT_CHARSET);
                :
        $data = http_request($url);
        if ($data['rc'] !== 200) return '';
--plugin/amazon.inc.php
        $data = http_request($url);
        return ($data['rc'] == 200) ? $data['data'] : '';
--plugin/showrss.inc.php
                // Newly get RSS
                $data = http_request($target);
                if ($data['rc'] !== 200)
                        return array(FALSE, 0);
--pulgin/tb.inc.php
        // URL validation (maybe worse of processing time limit)
        $result = http_request($url, 'HEAD');
        if ($result['rc'] !== 200) return array(PLUGIN_TB_ERROR, 'URL is fictitious.');
してみる。 -- [[よっちい]] &new{2007-12-15 (土) 10:24:15};
- 確認ありがとうございます。方針としては、そのバッティングしている機構が過去のtrackback実装でしか使われていない(そのために作られた)というのなら、その部分を捨てた上で、PECLにも互換の関数として作り直すのがスマートなのであろうと思っています。 -- [[henoheno]] &new{2007-12-18 (火) 01:01:42};


- 私は、以下の対処法にしました。
1、lib/pukiwiki.php
 // require(LIB_DIR . 'proxy.php');
 のようにコメントにする
(2、index.phpにて、error_reporting(E_ALL)を無効にする(コメントアウトする)) --  &new{2009-06-11 (木) 22:44:56};

- lib/proxy.php関連: [[BugTrack2/215]], [[BugTrack2/305]], [[BugTrack2/317]] --  &new{2010-10-05 (火) 21:18:06};

//#comment

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.012 sec.

SourceForge