Project

General

Profile

Backport(バックポート) #2325

OpenPNE.ymlのbase_url にパスが含まれない場合に、デバッグモードでwarningメッセージが表示される場合がある

Added by Shinichi Urabe about 8 years ago. Updated almost 8 years ago.

Status:
Fixed(完了)
Priority:
Normal(通常)
Assignee:
Target version:
Start date:
2010-09-10
Due date:
2011-10-06
% Done:

100%


Description

症状

OpenPNE.yml の base_url に、 http://sns.example.com と末尾にスラッシュをつけずに設定した場合、デバッグモード実行していると warning が表示される箇所があります。より厳密には、末尾にスラッシュがない場合ではなく、URLにパスが含まれない場合です。

再現する箇所の例

環境

  • PHP 5.3.2 on Windows(XAMPP)
  • PHP 5.3.2 on Ubuntu 10.04

原因

opApplicationConfiguration::getAppRouting() 内で parse_url($url) の結果 $parts を使っている箇所があり、そこで $parts['path'] が定義されているかを確認せずに参照している。

http://sns.example.com のようなパスが含まれないURLの場合、 parse_url() が返す連想配列に path というキーは含まれない。

修正内容

  • lib/config/opApplicationConfiguration.class.php getAppRouting() メソッド内
    586-    $url = sfConfig::get('op_base_url');
    587-    if ('http://example.com' !== $url)
    588-    {
    589-      $parts = parse_url($url);
    590-      $options['context'] = array(
    591-        'prefix' => $this->getAppScriptName($application, sfConfig::get('sf_environment'), $parts['path'], $isNoScriptName),
    592-        'host'   => $parts['host'],
    593-      );
    594-    }
    

591 行目で $parts['path'] が存在する前提として参照しているため、この直前で $parts['path'] を明示的に定義する(存在しなければデフォルト値を与える)。

ここで与えるべきデフォルト値は null か空文字列がよいと思われるが、より適切な値があればそれを与える。

補足

$parts['path'] のデフォルト値については #1577:note-9 - #1577:note-10 の考察を以て「空文字列」とすることにした。

また、このチケットでは問題とされていないが、 $parts['host'] の値についても定義されていない場合を考慮するようにした。

更に、このチケットでの修正に併せて #1577:note-18 で言及されている問題も解消した(内容は #1577:note-16 を参照)。


Related issues

Related to OpenPNE 3 - Bug(バグ) #1577: OpenPNE.ymlのbase_url にパスが含まれない場合に、デバッグモードでwarningメッセージが表示される場合がある Fixed(完了) 2010-09-10
Related to OpenPNE 3 - Backport(バックポート) #2120: 設定ファイルを記述し忘れた場合に、招待メールに記載されたURLにアクセスできない Fixed(完了) 2011-05-19 2011-10-06
Related to OpenPNE 3 - Backport(バックポート) #2324: There are wrong URL generating for op_base_url with path name (パス名付きの op_base_url に対して誤った URL 生成をしている箇所がある) Fixed(完了) 2010-06-08 2011-10-06

History

#1 Updated by Shinichi Urabe about 8 years ago

  • Tracker changed from Bug(バグ) to Backport(バックポート)

#2 Updated by Shinichi Urabe almost 8 years ago

  • Due date set to 2011-10-06
  • Assignee set to Yuya Watanabe

#3 Updated by Yuya Watanabe almost 8 years ago

  • Status changed from New(新規) to Accepted(着手)

#4 Updated by Yuya Watanabe almost 8 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

本チケットは #2324 のBP元である #1155 の修正から発生した問題であると思われるため,下記コミットで同時に修正を行いました.

624162b8

参考:http://redmine.openpne.jp/issues/2324#note-2

#5 Updated by Minoru Takai almost 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

note-4 について

#2120 #2325 は下記実装案では問題として発生しないと考えられますが,レビューおよびテストの手がかりとするため,本チケット対応後に同様のステータスに変更します.

ということなので、本チケットにコミットが紐付いていませんが、本チケットは #2324 の重複チケットと見做さず、このチケットで扱う予定だったコミットを #2324 で併せて行った(コミットに紐付くチケットを変更している状態)と見做します(※)。

※通常、修正前には、修正後に直っているはずの問題が再現できるはずですが、関連修正を併せて行なっているためこれが確認できない可能性があります。このように結果的にコミットが紐付かないチケットが生じた場合は重複チケットとして(関連チケットで duplicates - duplicated by の紐付けをした上で) Duplidated (Invalid) クローズすることがしばしばあります。

本件のレビューは #2324624162b8 に対して行ったこととします。レビューOKです。

#6 Updated by Mutsumi Imamura almost 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

動作確認OKです。

Also available in: Atom PDF