SF.net のトラッカー(
http://sourceforge.net/tracker/index.php?func=detail&aid=2073613&grou... )にも上げましたが、英語がとても苦手なため補足しておきます。
fuga さん達と一緒に突っついている OpenID モジュールで fuga さんが Mixi 対応したときに見つけた問題です。
"Legacy_Controller.class.php" と
"Legacy_PublicControllerStrategy.class.php" にて、$_SERVER['REQUEST_URI'] を parse_url() で処理しているのですが、parse_url() では URI のみでは、正常に処理できない場合があるようです。
例えば、GETクエリーが "XOOPS_URL/index.php?http://" であった場合に、parse_url($_SERVER['REQUEST_URI']) は失敗して FALSE を返します。("http://" が URLエンコードされていれば問題はない。)
そこで、自分なりに次のように変更してみたところ、なんとなく上手くいっているようです。
Legacy_Controller.class.php, Line:383 -
//$requestPathInfo = parse_url($_SERVER['REQUEST_URI']);
//$requestPath = isset($requestPathInfo['path']) ? urldecode($requestPathInfo['path']) : '';
$requestPathInfo = explode('?', $_SERVER['REQUEST_URI']);
$requestPath = urldecode($requestPathInfo[0]);
Legacy_PublicControllerStrategy.class.php, Line: 43 -
//$pathArray = parse_url(xoops_getenv('REQUEST_URI'));
//$mid = preg_match("#(/index\.php|/)$#i", @$pathArray['path']) ? -1 : 0;
$pathArray = explode('?', xoops_getenv('REQUEST_URI'));
$mid = preg_match("#(/index\.php|/)$#i", $pathArray[0]) ? -1 : 0;
検証をよろしくお願いします。