プロジェクト

全般

プロフィール

Backport(バックポート) #2725

Yuya Watanabe さんがほぼ13年前に更新

h3. Overview (現象) 

 config/OpenPNE.yml で80番以外のポート番号を含むURLをbase_urlに指定した場合、通知メール等に含まれるURLにポート番号が反映されない 

 h3. Environment (再現バージョン) 

 OpenPNE3.6beta8 

 h3. Way to repro (再現手順) 

 # config/OpenPNE.yml で80番以外のポート番号を含むURLをbase_urlに指定 
 # 招待メールを送ってみる 
 # 招待状本文中の「〜〜SNS に参加する」URLのリンクにポート番号が含まれない 

 例:<pre> 
 base_url: "http://sns.openpne.jp:8080" 
 </pre>→<pre> 
 ... 
 ■ ××××SNS に参加する 
 http://sns.openpne.jp/member/register/token/xyxyxyxyxyxyxyxy 
 ... 
 </pre> 

 h3. Causes (原因) 

 parse_url(sfConfig::get('op_base_url')) の戻り値配列に含まれる port が使われていない 

 h3. Way to fix (修正内容) 

 * parse_url() の戻り値配列に含まれる port を保持。 を保持。(lib/config/opApplicationConfiguration.class.php) 
 * sfPatternRoutingを継承したクラス opPatternRouting で修正。symfony側(sfRouting)には手をつけない。 

 <pre> 修正パッチ: https://github.com/tozuka/OpenPNE3/commit/1da0e7306a7815a8502f7524a6b26f1436096bd7 

 h3. 備考 

 config/OpenPNE.yml.sample のように<pre> 
 diff --git a/lib/config/opApplicationConfiguration.class.php b/lib/config/opApplicationConfiguration.class.php base_url: "http://example.com" 
 index f1e8d92..cd29665 100644 
 --- a/lib/config/opApplicationConfiguration.class.php 
 +++ b/lib/config/opApplicationConfiguration.class.php 
 @@ -598,6 +598,10 @@ abstract class opApplicationConfiguration extends sfApplicationConfiguration 
        if (isset($parts['host'])) 
        { 
          $options['context']['host'] = $parts['host']; 
 +          if (isset($parts['port'])) 
 +          { 
 +            $options['context']['host'] .= ':'.$parts['port']; 
 +          } 
        } 
      } 
      else 
 </pre> </pre>が指定されていると、実際のリクエストからURLをポート番号込みで読み取って絶対URLを生成してくれる実装になっているが、op_base_url までは書き換えてくれないのでメールのフッタには http://example.com と表示される。 

戻る