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'); }ではダメですか? -- よっちい 2007-11-15 (木) 20:08:07
実装本体だが、内部でリダイレクトしている。
// Redirect return http_request($url, $method, $headers, $post, $redirect_max);
: $result = http_request($tb_id, 'POST', '', $putdata, 2, CONTENT_CHARSET); : $data = http_request($url); if ($data['rc'] !== 200) return '';
$data = http_request($url); return ($data['rc'] == 200) ? $data['data'] : '';
// Newly get RSS $data = http_request($target); if ($data['rc'] !== 200) return array(FALSE, 0);
// 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.');してみる。 -- よっちい 2007-12-15 (土) 10:24:15
// require(LIB_DIR . 'proxy.php'); のようにコメントにする(2、index.phpにて、error_reporting(E_ALL)を無効にする(コメントアウトする)) -- 2009-06-11 (木) 22:44:56
エラー表示を有効にした際の表示 Fatal error: Cannot redeclare http_request() in pukiwiki\lib\proxy.php on line 126
・グローバル関数 http_request (PECL pecl_http >= 1.0.0) との名称衝突 ・pukiwiki開発者が報告を長年無視し続けているため。 ・他のツールを無視したpukiwiki開発者の関数の命名方法に問題がある 将来の衝突回避および動作チェックや 添付プラグイン以外への影響を考慮すると最小限の修正ですむ対処法1が無難だろう。
http_requestの名称変更 対象ファイル : lib/proxy.php , plugin/amazon.inc.php , plugin/showrss.inc.php 例 http_request --> pkwk_http_request
・ pukiwiki.ini.phpのrequire(LIB_DIR . 'proxy.php');を削除し、lib/proxy.phpを削除する ・ plugin/amazon.inc.php , plugin/showrss.inc.phpを修正する amazon.inc.php -$data = http_request($url); -return ($data['rc'] == 200) ? $data['data'] : ''; +$data = file_get_contents($url); +return ($data !== false) ? $data : ''; showrss.inc.php -$data = http_request($target); -if ($data['rc'] !== 200) +$data = file_get_contents($target); +if ($data === false)