Project

General

Profile

Backport(バックポート) #2725

Updated by Yuya Watanabe over 9 years ago

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 と表示される。

Back