Project

General

Profile

Backport(バックポート) #2163

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

Added by isao sano over 8 years ago. Updated about 8 years ago.

Status:
Fixed(完了)
Priority:
High(高め)
Target version:
Start date:
2011-06-09
Due date:
% 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

Associated revisions

Revision 3235f108 (diff)
Added by Maki Takahashi over 8 years ago

(fixes #2163, BP from #1577) fixed opApplicationConfiguration::getAppRouting() because a warning occurred by it when the base_url's last character is not '/'

Revision 58a8667f (diff)
Added by Shogo Kawahara over 8 years ago

(fixes #2163, BP from #1577) fixed opApplicationConfiguration::getAppRouting() correctly to get path information

Revision 486a4749 (diff)
Added by Maki Takahashi over 8 years ago

(fixes #2163, BP from #1577) fixed opApplicationConfiguration::getAppRouting() because a warning occurred by it when the base_url's last character is not '/'

Revision 58099c9d (diff)
Added by Shogo Kawahara over 8 years ago

(fixes #2163, BP from #1577) fixed opApplicationConfiguration::getAppRouting() correctly to get path information

History

#1 Updated by Kousuke Ebihara over 8 years ago

  • Target version changed from OpenPNE3.6beta11 to OpenPNE3.6beta12

親チケットが「テスト待ち」「完了」でないものをすべて beta12 以降での対応とします。

#2 Updated by Shingo Yamada over 8 years ago

  • Assignee changed from Shingo Yamada to Maki Takahashi

#3 Updated by Maki Takahashi over 8 years ago

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

#4 Updated by Anonymous over 8 years ago

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

更新履歴 3235f1084d6deaceb3257231c65c3931edde530c で適用されました。

#5 Updated by Kousuke Ebihara over 8 years ago

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

#6 Updated by Shogo Kawahara over 8 years ago

  • Subject changed from OpenPNE.ymlのbase_urlで末尾に「/」がないURLを設定した場合に、デバッグモードでwarningメッセージが表示される場合がある to OpenPNE.ymlのbase_url にパスが含まれない場合に、デバッグモードでwarningメッセージが表示される場合があ

#7 Updated by Shogo Kawahara over 8 years ago

親チケット差し戻しのため、こちらのチケットも差し戻したいです。
( 私には権限がないです。 )

#8 Updated by Shingo Yamada over 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Pending Fixing(修正待ち)

#9 Updated by Maki Takahashi over 8 years ago

  • Status changed from Pending Fixing(修正待ち) to Accepted(着手)

親チケットの修正分を取り込みます

#10 Updated by Shogo Kawahara over 8 years ago

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

更新履歴 58a8667f576c0e90593116bf835f93c0c3b30278 で適用されました。

#11 Updated by Shogo Kawahara over 8 years ago

更新履歴 58099c9d3c1d947651566edbec3a0d363b610187 で適用されました。

#12 Updated by Anonymous over 8 years ago

更新履歴 486a47496fd810a7391f5bf99c24461e3b65494a で適用されました。

#13 Updated by Kousuke Ebihara over 8 years ago

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

#14 Updated by Minoru Takai over 8 years ago

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

コードチェック

親チケットで修正内容に疑問がありましたが、それについて親チケットでのコミット内容が妥当だと確認できています。このチケットでは親チケットと同一の修正が取り込まれていることが確認できているのでOKです。

動作テスト

親チケット(master:3.7.0)と同様にテストを行いました。

この問題は、ソースコードの修正さえ見れば改善されているか否かは明らかであり、動作テストの重点はコードチェックに置かれます。ソースコードの修正は妥当だと判断できており、このチケットへの対応はOKと判断できます。

ついでにですが、 http://sns.example.com/pc_backend_dev.php のようなURLとなるSNS(テスト環境)において、修正前のコードでは「未定義の $parts['path'] を参照している旨の warning が表示されていること」を確認し、修正後のコードではこの警告が表示されなくなったことを確認しました。

完了とします。

#15 Updated by Yuma Sakata about 8 years ago

テストOKです。

Also available in: Atom PDF