プロジェクト

全般

プロフィール

Backport(バックポート) #2325

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

Shinichi Urabe12年以上前に追加. 12年以上前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2010-09-10
期日:
2011-10-06
進捗率:

100%


説明

症状

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 を参照)。


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #1577: OpenPNE.ymlのbase_url にパスが含まれない場合に、デバッグモードでwarningメッセージが表示される場合がある Fixed(完了) 2010-09-10
関連している OpenPNE 3 - Backport(バックポート) #2120: 設定ファイルを記述し忘れた場合に、招待メールに記載されたURLにアクセスできない Fixed(完了) 2011-05-19 2011-10-06
関連している 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

履歴

#1 Shinichi Urabe12年以上前に更新

  • トラッカーBug(バグ) から Backport(バックポート) に変更

#2 Shinichi Urabe12年以上前に更新

  • 期日2011-10-06 にセット
  • 担当者Yuya Watanabe にセット

#3 Yuya Watanabe12年以上前に更新

  • ステータスNew(新規) から Accepted(着手) に変更

#4 Yuya Watanabe12年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

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

624162b8

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

#5 Minoru Takai12年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

note-4 について

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

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

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

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

#6 Mutsumi Imamura12年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

動作確認OKです。

他の形式にエクスポート: Atom PDF