OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2017-02-17T07:57:45Z
OpenPNE Issue Tracking System
Redmine
OpenPNE 3 - Task(タスク) #4159 (New(新規)): MySQLのSTRICT_TRANS_TABLESが有効な状態でテスト用fixtureのロードに失敗する
http://redmine.openpne.jp/issues/4159
2017-02-17T07:57:45Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>MySQL 5.7 の Strict Mode が有効な状態での動作確認 (<a class="issue tracker-5 status-2 priority-4 priority-default parent" title="Task(タスク): MySQLのStrict Modeを有効にした場合に生じる問題を調査 (Accepted(着手))" href="http://redmine.openpne.jp/issues/4033">#4033</a>) を行った際に発生した。</p>
<p>fixture の読み込みを必要とするテストコードを実行すると下記のエラーが発生する:<br /><pre>
$ php test/unit/model/doctrine/MemberTest.php
PHP Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '' for column 'value_datetime' at row 1' in /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php:1082
Stack trace:
#0 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Statement.php(269): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement))
#1 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(1042): Doctrine_Connection_Statement->execute(Array)
#2 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(687): Doctrine_Connection->exec('INSERT INTO mem...', Array)
#3 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php(647): Doctrine_Connection->insert(Object(MemberProfileTable), in /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1082
</pre></p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/test/fixtures/common/test_data.yml#L344">source:test/fixtures/common/test_data.yml@43190aa1#L344</a>:<br /><pre><code class="yaml syntaxhl"><span class="CodeRay"> <span class="key">second_member_profile_birthday</span>:
<span class="key">value</span>: <span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>
<span class="key">value_datetime</span>: <span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>
<span class="key">public_flag</span>: <span class="string"><span class="content">1</span></span>
<span class="key">Member</span>: <span class="string"><span class="content">second_member</span></span>
<span class="key">Profile</span>: <span class="string"><span class="content">profile_birthday</span></span>
<span class="key">children</span>: <span class="string"><span class="content">[]</span></span>
</span></code></pre></p>
<p>上記の value_datetime に空文字列をセットしていることが原因。</p>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/test/fixtures/common/xss_test_data.yml#L244">source:test/fixtures/common/xss_test_data.yml@43190aa1#L244</a>:<br /><pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">OAuthMemberToken</span>:
<span class="key">first_member_html_oauth_token</span>:
<span class="key">key_string</span>: <span class="string"><span class="delimiter">"</span><span class="content">fIrStMeMbErHtMlOaUtHtOkEn</span><span class="delimiter">"</span></span>
<span class="key">secret</span>: <span class="string"><span class="delimiter">"</span><span class="content">fIrStMeMbErHtMlOaUtHsEcReT</span><span class="delimiter">"</span></span>
<span class="key">type</span>: <span class="string"><span class="delimiter">"</span><span class="content">access</span><span class="delimiter">"</span></span>
<span class="key">is_active</span>: <span class="string"><span class="content">1</span></span>
<span class="key">Consumer</span>: <span class="string"><span class="content">html_oauth_consumer1</span></span>
<span class="key">Member</span>: <span class="string"><span class="content">first_member</span></span>
</span></code></pre></p>
<p>また、上記の key_string についても定義されている VARCHAR のサイズを越える文字列のためエラーが発生する。</p>
OpenPNE 3 - Task(タスク) #4158 (New(新規)): MySQLのSTRICT_TRANS_TABLESが有効な状態でプリセットのプロフィール項目を登録するとエラー
http://redmine.openpne.jp/issues/4158
2017-02-17T03:55:14Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>MySQL 5.7 の Strict Mode が有効な状態での動作確認 (<a class="issue tracker-5 status-2 priority-4 priority-default parent" title="Task(タスク): MySQLのStrict Modeを有効にした場合に生じる問題を調査 (Accepted(着手))" href="http://redmine.openpne.jp/issues/4033">#4033</a>) を行った際に発生した。</p>
<p>管理画面の「プロフィール項目登録」でプリセットから選択した項目を登録すると下記のエラーが発生する:</p>
<pre>
SQLSTATE[HY000]: General error: 1364 Field 'caption' doesn't have a default value
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<pre><code class="sql syntaxhl"><span class="CodeRay"><span class="class">INSERT</span> <span class="class">INTO</span> profile (name, is_required, is_unique, is_edit_public_flag, default_public_flag, form_type, value_type, is_disp_regist, is_disp_config, is_disp_search, is_public_web, sort_order, created_at, updated_at) <span class="keyword">VALUES</span> (<span class="string"><span class="delimiter">'</span><span class="content">op_preset_country</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">country_select</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">string</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">130</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16 21:24:37</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16 21:24:37</span><span class="delimiter">'</span></span>)
<span class="class">INSERT</span> <span class="class">INTO</span> profile_translation (id, lang) <span class="keyword">VALUES</span> (<span class="string"><span class="delimiter">'</span><span class="content">5</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">en</span><span class="delimiter">'</span></span>)
</span></code></pre>
<p>二つ目のクエリで、NOT NULL 制約のある <code>caption</code> に値がセットされていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Task(タスク) #4040 (New(新規)): #3083の修正コミットがstable-3.8.xのみに存在し、masterブランチに対するチケット及びPull R...
http://redmine.openpne.jp/issues/4040
2016-11-14T07:59:10Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> はトラッカーが Bug のチケットであるが、その修正コミットである <a class="changeset" title="(fixes #3083) fixed not to occur Exception when channel server was not registered" href="http://redmine.openpne.jp/projects/op3/repository/revisions/41db124efa99201060a2d17cecac966045b8c611">41db124e</a> は stable-3.8.x に取り込まれている。<br />そのため <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> の役割は実質 Backport のチケットであるが、一方で <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> の修正を master ブランチで行うチケットが存在していない。</p>
<p>内容が酷似した <a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3011">#3011</a>, <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport(バックポート): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3012">#3012</a> のチケットも存在するが、これらは <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> 以前に master ブランチで修正および stable-3.8.x へのバックポートが既に行われている。<br /><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> は、一度 <a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3011">#3011</a>, <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport(バックポート): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3012">#3012</a> で修正した問題について再び修正を試みたチケットであるように読み取れる。</p>
<a name="対応方法"></a>
<h3 >対応方法<a href="#対応方法" class="wiki-anchor">¶</a></h3>
<p>stable-3.8.x ブランチにしか存在しない <a class="changeset" title="(fixes #3083) fixed not to occur Exception when channel server was not registered" href="http://redmine.openpne.jp/projects/op3/repository/revisions/41db124efa99201060a2d17cecac966045b8c611">41db124e</a> の修正を master ブランチに cherry-pick するためのチケットおよび Pull Request を作成する</p>
OpenPNE 3 - Enhancement(機能追加・改善) #3969 (New(新規)): #3962で削除したテストコードを動作する状態にして再び追加する
http://redmine.openpne.jp/issues/3969
2016-07-19T02:30:37Z
Youichi Kimura
kim.upsilon@bucyou.net
<p><a class="issue tracker-2 status-10 priority-4 priority-default parent" title="Enhancement(機能追加・改善): 壊れたテストコードを削除する (Pending Testing(テスト待ち))" href="http://redmine.openpne.jp/issues/3962">#3962</a> で削除したテストコードを動作する状態に修正した上で再び追加します。</p>
<a name="Functional-Test"></a>
<h4 >Functional Test<a href="#Functional-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>pc_backend
<ul>
<li>POST /community/categoryEdit/id/1 (CSRF)</li>
<li>POST /community/addDefaultCommunity/id/1 (CSRF)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/1 (CSRF)</li>
<li>POST /default/login (CSRF)</li>
<li>POST /design/gadget?type=gadget (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=sideBanner (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=mobile (sfTesterDoctrine::check)</li>
<li>POST /design (CSRF)</li>
<li>POST /design/banner (CSRF)</li>
<li>POST /design/banneradd (CSRF)</li>
<li>POST /design/gadget (CSRF)</li>
<li>POST /design/customCss (CSRF)</li>
<li>GET /member/delete/id/1055 (XSS)</li>
<li>POST /monitoring/editImage (CSRF)</li>
<li>POST /navigation/edit?app=pc (CSRF)</li>
<li>POST /navigation/edit?app=mobile (CSRF)</li>
<li>POST /navigation/edit?app=backend (CSRF)</li>
<li>POST /plugin/list?type=application (CSRF)</li>
<li>POST /plugin/list?type=auth (CSRF)</li>
<li>POST /plugin/list?type=skin (CSRF)</li>
<li>POST /profile/edit (CSRF)</li>
<li>POST /profile/editOption (CSRF)</li>
<li>GET /sns/config?category=general (sfTestFunctionalBase::click)</li>
<li>POST /sns/richTextarea (CSRF)</li>
<li>POST /sns/changeRichTextareaButtonOrder (CSRF)</li>
</ul>
</li>
<li>pc_frontend
<ul>
<li>POST /community/quit?id=1 (CSRF)</li>
<li>POST /community/join?id=1 (CSRF)</li>
<li>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</li>
<li>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</li>
<li>GET /community/1055 (XSS)</li>
<li>「コミュニティリスト」ガジェットの画像部分のリンク先に対するリクエスト</li>
<li>「コミュニティリスト」ガジェットのテキスト部分のリンク先に対するリクエスト</li>
<li>POST /confirmation/community_admin_request/5 (CSRF)</li>
<li>POST /confirmation/community_sub_admin_request/8 (CSRF)</li>
<li>GET /connection/1055 (XSS)</li>
<li>GET /connection/list (XSS)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/2/delete (CSRF)</li>
<li>POST /connection/2 (CSRF)</li>
<li>POST /connection/revoke/2 (CSRF)</li>
<li>POST /leave (CSRF)</li>
<li>POST /member/config?category=accessBlock (CSRF)</li>
<li>POST /member/config?category=language (CSRF)</li>
<li>GET / (XSS, RSSガジェット部分)</li>
</ul>
</li>
<li>api
<ul>
<li><a href="https://houou.github.io/api.php/" class="external">JSON API</a> に対するテスト</li>
</ul></li>
</ul>
<a name="Unit-Test"></a>
<h4 >Unit Test<a href="#Unit-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>Doctrine_Record::getListener() (opApplicationLevelCascadingListener)</li>
<li>ActivityDataTable::getPublicFlags()</li>
<li>CommunityCategoryTable::getAllChildren()</li>
<li>CommunityCategory::getChildren()</li>
<li>CommunityMemberTable::join()</li>
<li>CommunityMemberTable::quit()</li>
<li>CommunityMemberTable::requestChangeAdmin()</li>
<li>CommunityMemberTable::requestSubAdmin()</li>
<li>CommunityMemberTable::getMemberIdsByCommunityId()</li>
<li>CommunityTable::getCommunityMemberListPager()</li>
<li>CommunityTable::getDefaultCommunities()</li>
<li>Community::countCommunityMembers()</li>
<li>Community::getNameAndCount()</li>
<li>File::delete()</li>
<li>MemberProfileTable::searchMemberIds()</li>
<li>MemberRelationshipTable::retrievesByMemberIdFrom()</li>
<li>MemberRelationshipTable::getFriendListPager()</li>
<li>MemberRelationshipTable::getFriendMemberIds()</li>
<li>MemberTable::searchMemberIds()</li>
<li>Member::getProfiles()</li>
<li>Member::countFriends()</li>
<li>Member::getNameAndCount()</li>
<li>Member::delete()</li>
<li>OAuthConsumerInformationTable::getListPager()</li>
<li>OAuthConsumerInformation::getAPICaptions()</li>
<li>ProfileOptionTable::getMaxSortOrder()</li>
<li>ProfileTable::getMaxSortOrder()</li>
<li>Profile::getOptionsArray()</li>
<li>opToolkit::loadXmlString()</li>
</ul>
OpenPNE 3 - Bug(バグ) #3946 (New(新規)): 新規登録時に携帯電話の登録を求める画面(PC)に翻訳されていない箇所がある
http://redmine.openpne.jp/issues/3946
2016-05-20T04:12:05Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>管理画面の「携帯関連設定」(/advanced/config?category=mobile) にある「メンバー登録時の携帯個体識別番号取得設定」を「PC・携帯登録時に携帯個体識別番号の登録を必須にする」に設定すると PC からの新規登録時に携帯メールアドレスの入力を求められるが、入力する欄のラベルが「Mobile address」のまま未翻訳の状態になっている。</p>
<p><img src="http://redmine.openpne.jp/attachments/download/619/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2016-05-20_13.00.28.png" style="width:693px;" alt="" /></p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><code>registerMobileForm</code> の <code>mobile_address</code> に対してラベルが設定されておらずデフォルトの「Mobile address」が使用されるのに対し、<code>messages.js.xml</code> には「Mobile E-mail Address」は存在するものの「Mobile address」の翻訳は存在しないため英語のまま表示されてしまう。</p>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/apps/pc_frontend/modules/member/lib/registerMobileForm.class.php">source:apps/pc_frontend/modules/member/lib/registerMobileForm.class.php@43190aa1</a>:</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">function</span> <span class="function">configure</span>()
{
<span class="local-variable">$this</span>->setWidget(<span class="string"><span class="delimiter">'</span><span class="content">mobile_address</span><span class="delimiter">'</span></span>, <span class="keyword">new</span> sfWidgetFormInput());
<span class="local-variable">$this</span>->setValidator(<span class="string"><span class="delimiter">'</span><span class="content">mobile_address</span><span class="delimiter">'</span></span>, <span class="keyword">new</span> sfValidatorMobileEmail());
<span class="local-variable">$this</span>->mergePostValidator(<span class="keyword">new</span> sfValidatorCallback(<span class="predefined">array</span>(
<span class="string"><span class="delimiter">'</span><span class="content">callback</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(<span class="local-variable">$this</span>, <span class="string"><span class="delimiter">'</span><span class="content">isUnique</span><span class="delimiter">'</span></span>),
<span class="string"><span class="delimiter">'</span><span class="content">arguments</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">mobile_address</span><span class="delimiter">'</span></span>),
)));
}
</span></code></pre>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/apps/pc_frontend/i18n/messages.ja.xml#L469">source:apps/pc_frontend/i18n/messages.ja.xml@43190aa1#L469</a>:</p>
<pre><code class="xml syntaxhl"><span class="CodeRay"> <span class="tag"><trans-unit</span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span><span class="tag">></span>
<span class="tag"><source></span>Mobile E-mail Address<span class="tag"></source></span>
<span class="tag"><target></span>携帯メールアドレス<span class="tag"></target></span>
<span class="tag"></trans-unit></span>
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p><code>registerMobileForm::configure()</code> メソッド内に下記のコードを追加し、既存の翻訳が使われるようにする。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$this</span>->widgetSchema->setLabel(<span class="string"><span class="delimiter">'</span><span class="content">mobile_address</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">Mobile E-mail Address</span><span class="delimiter">'</span></span>);
</span></code></pre>
OpenPNE 3 - Bug(バグ) #3934 (New(新規)): :80, :443 以外のポートでアクセスするSNSでOAuth署名の検証に失敗する
http://redmine.openpne.jp/issues/3934
2016-04-25T09:47:24Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><a class="external" href="http://sns.example.com:8080/">http://sns.example.com:8080/</a> のように :80, :443 以外のポートに設置された SNS で、opWebAPIPlugin などが提供する API に OAuth を使用してアクセスしようとすると OAuth 署名の検証に失敗してエラーとなる。</p>
<p>その際に、Apache の error_log には下記のようなエラーが記録される:</p>
<pre>
[Mon Apr 25 09:08:16.854133 2016] [fcgid:warn] [pid 27166:tid 139768981554944] [client 10.0.2.2:60103] mod_fcgid: stderr: Invalid signature
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/lib/vendor/OAuth/OAuth.php#L190">source:lib/vendor/OAuth/OAuth.php@43190aa1#L190</a></p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">function</span> <span class="function">from_request</span>(<span class="local-variable">$http_method</span>=<span class="predefined-constant">NULL</span>, <span class="local-variable">$http_url</span>=<span class="predefined-constant">NULL</span>, <span class="local-variable">$parameters</span>=<span class="predefined-constant">NULL</span>) {
<span class="local-variable">$scheme</span> = (!<span class="predefined">isset</span>(<span class="predefined">$_SERVER</span>[<span class="string"><span class="delimiter">'</span><span class="content">HTTPS</span><span class="delimiter">'</span></span>]) || <span class="predefined">$_SERVER</span>[<span class="string"><span class="delimiter">'</span><span class="content">HTTPS</span><span class="delimiter">'</span></span>] != <span class="string"><span class="delimiter">"</span><span class="content">on</span><span class="delimiter">"</span></span>)
? <span class="string"><span class="delimiter">'</span><span class="content">http</span><span class="delimiter">'</span></span>
: <span class="string"><span class="delimiter">'</span><span class="content">https</span><span class="delimiter">'</span></span>;
<span class="exception">@</span><span class="local-variable">$http_url</span> <span class="keyword">or</span> <span class="local-variable">$http_url</span> = <span class="local-variable">$scheme</span> .
<span class="string"><span class="delimiter">'</span><span class="content">://</span><span class="delimiter">'</span></span> . <span class="predefined">$_SERVER</span>[<span class="string"><span class="delimiter">'</span><span class="content">HTTP_HOST</span><span class="delimiter">'</span></span>] .
<span class="string"><span class="delimiter">'</span><span class="content">:</span><span class="delimiter">'</span></span> .
<span class="predefined">$_SERVER</span>[<span class="string"><span class="delimiter">'</span><span class="content">SERVER_PORT</span><span class="delimiter">'</span></span>] .
<span class="predefined">$_SERVER</span>[<span class="string"><span class="delimiter">'</span><span class="content">REQUEST_URI</span><span class="delimiter">'</span></span>];
</span></code></pre>
<p>上記のコードは <code>OAuthRequest::from_request()</code> メソッドの冒頭部分であるが、例えば <code>http://sns.example.com:8080/</code> のような URL にアクセスがあった場合は上記の <code>$_SERVER['HTTP_HOST']</code> には <code>sns.example.com:8080</code> の文字列が入る。<br />つまり、この場合の <code>$http_url</code> は <code>http://sns.example.com:8080:8080/</code> という文字列が生成されてしまう。<br />この <code>$http_url</code> は <code>oauth_signature</code> の検証にも使用される文字列であるため、最終的には署名の検証に失敗し不正なリクエストとして扱われることになる。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>この不具合は <code>lib/vendor/OAuth/OAuth.php</code> の問題であるが、 <a class="external" href="https://code.google.com/archive/p/oauth/issues/170">https://code.google.com/archive/p/oauth/issues/170</a> の通り既に報告がされており修正も済んでいる。<br />そのため、<code>lib/vendor/OAuth/OAuth.php</code> を最新の <a class="external" href="https://oauth.googlecode.com/svn/code/php/OAuth.php">https://oauth.googlecode.com/svn/code/php/OAuth.php</a> に置き換えることで当チケットの不具合は解決する。</p>
OpenPNE 3 - Bug(バグ) #3933 (New(新規)): 利用可能な認証プラグインが無い状態でログイン画面を開くとFatal errorになる
http://redmine.openpne.jp/issues/3933
2016-04-21T11:04:17Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>管理画面の「認証プラグイン設定」(/pc_backend.php/plugin/list?type=auth) から認証プラグインの設定ページを開き、全ての認証プラグインで「PC版有効設定」を「無効にする」に設定した状態で PC 版のログイン画面を開くと HTTP 500 エラーとなり、Web ブラウザ側にはエラーメッセージ等もない真っ白なページが表示される。</p>
<p>Apache 等のエラーログには下記のようなエラーが記録される:</p>
<pre>
[Thu Apr 21 10:30:57.453033 2016] [fcgid:warn] [pid 1331:tid 140111127688960] [client 10.0.2.2:49636] mod_fcgid: stderr: PHP Fatal error: Cannot instantiate abstract class opAuthAdapter in /var/www/sns/op36.localhost/lib/user/opAdaptableUser.class.php on line 99, referer: http://op36.localhost:8080/
</pre>
<p>類似の設定として、管理画面の「SNS設定」には「PC版使用設定」「携帯版使用設定」があるが、ここで無効に設定した場合は「このページにはアクセスできません。」とエラーメッセージが表示される。<br />認証プラグインの「PC版有効設定」および「携帯版有効設定」は、PC 版のみアクセス可能な SNS として設定したいなどの目的で無効に設定する可能性があるが、当チケットの現象ではユーザー側にメッセージを表示することもなく Fatal error で異常終了するという形で SNS が利用できなくなるため、「PC版使用設定」「携帯版使用設定」と比べて不親切である。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/lib/user/opAdaptableUser.class.php#L28">source:lib/user/opAdaptableUser.class.php@43190aa1#L28</a></p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">function</span> <span class="function">initialize</span>(sfEventDispatcher <span class="local-variable">$dispatcher</span>, sfStorage <span class="local-variable">$storage</span>, <span class="local-variable">$options</span> = <span class="predefined">array</span>())
{
<span class="predefined-constant">parent</span>::initialize(<span class="local-variable">$dispatcher</span>, <span class="local-variable">$storage</span>, <span class="local-variable">$options</span>);
<span class="keyword">if</span> (<span class="local-variable">$this</span>->getMemberId() && <span class="local-variable">$this</span>->isTimedOut())
{
<span class="local-variable">$this</span>->getAttributeHolder()->removeNamespace(<span class="string"><span class="delimiter">'</span><span class="content">opSecurityUser</span><span class="delimiter">'</span></span>);
}
<span class="local-variable">$request</span> = sfContext::getInstance()->getRequest();
<span class="local-variable">$authMode</span> = <span class="local-variable">$request</span>->getUrlParameter(<span class="string"><span class="delimiter">'</span><span class="content">authMode</span><span class="delimiter">'</span></span>);
<span class="keyword">if</span> (<span class="local-variable">$authMode</span>)
{
<span class="local-variable">$this</span>->setCurrentAuthMode(<span class="local-variable">$authMode</span>);
}
<span class="local-variable">$this</span>->createAuthAdapter(<span class="local-variable">$this</span>->getCurrentAuthMode());
}
</span></code></pre>
<p>上記のコードで、利用可能な認証プラグインが存在しない状態で <code>$this->getCurrentAuthMode()</code> が呼び出されると null が返るが、このメソッドではそのことが考慮されておらず <code>$this->createAuthAdapter()</code> の <code>$authMode</code> に null を渡してしまう。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">function</span> <span class="function">getAuthAdapterClassName</span>(<span class="local-variable">$authMode</span>)
{
<span class="keyword">return</span> <span class="string"><span class="delimiter">'</span><span class="content">opAuthAdapter</span><span class="delimiter">'</span></span>.<span class="predefined">ucfirst</span>(<span class="local-variable">$authMode</span>);
}
</span></code></pre>
<p>途中の呼び出し過程は省略するが、上記の <code>opAdaptableUser::getAuthAdapterClassName()</code> メソッドにも <code>$authMode</code> が null の状態で呼び出され、<code>'opAuthAdapter'</code> の文字列が返される。そして <code>opAuthAdapter</code> クラスを new でインスタンス化しようとすることで Fatal error が発生する。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Bug(バグ) #3476 (New(新規)): カスタム CSS を読み込む記述が 2 度書かれている
http://redmine.openpne.jp/issues/3476
2013-11-01T07:09:08Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>pc_frontend 内の各ページ (スマートフォン版を除く) にてカスタム CSS を読み込む link 要素が下記のように 2 つ書かれている。</p>
<pre><code class="html syntaxhl"><span class="CodeRay"><span class="tag"><head></span>
<span class="tag"><meta</span> <span class="attribute-name">http-equiv</span>=<span class="string"><span class="delimiter">"</span><span class="content">Content-Type</span><span class="delimiter">"</span></span> <span class="attribute-name">content</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/html; charset=utf-8</span><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="tag"><meta</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">robots</span><span class="delimiter">"</span></span> <span class="attribute-name">content</span>=<span class="string"><span class="delimiter">"</span><span class="content">index, follow</span><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="tag"><title></span>MySNS<span class="tag"></title></span>
<span class="tag"><link</span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">stylesheet</span><span class="delimiter">"</span></span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/css</span><span class="delimiter">"</span></span> <span class="attribute-name">media</span>=<span class="string"><span class="delimiter">"</span><span class="content">screen</span><span class="delimiter">"</span></span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">/opSkinBasicPlugin/css/main.css</span><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="tag"><link</span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">stylesheet</span><span class="delimiter">"</span></span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/css</span><span class="delimiter">"</span></span> <span class="attribute-name">media</span>=<span class="string"><span class="delimiter">"</span><span class="content">screen</span><span class="delimiter">"</span></span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">/cache/css/customizing.css</span><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="tag"><link</span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">stylesheet</span><span class="delimiter">"</span></span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/css</span><span class="delimiter">"</span></span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">/cache/css/customizing</span><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="tag"><script</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/javascript</span><span class="delimiter">"</span></span> <span class="attribute-name">src</span>=<span class="string"><span class="delimiter">"</span><span class="content">/js/util.js</span><span class="delimiter">"</span></span><span class="tag">></span><span class="tag"></script></span>
<span class="tag"></head></span>
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="changeset" title="(fixes #3006) fixed not to show apiKey when user is not logged in and to show apiKey when OpenPNE..." href="http://redmine.openpne.jp/projects/op3/repository/revisions/98f097f624d6e0ccfedcdda47e641f29fbb4ce15">98f097f624d6e0ccfedcdda47e641f29fbb4ce15</a> によって追加された customizing_css の記述が原因となっている。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="inline-delimiter"><?php</span> <span class="keyword">if</span> (<span class="constant">Doctrine</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">SnsConfig</span><span class="delimiter">'</span></span>)->get(<span class="string"><span class="delimiter">'</span><span class="content">customizing_css</span><span class="delimiter">'</span></span>)): <span class="inline-delimiter">?></span>
<span class="tag"><link</span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">stylesheet</span><span class="delimiter">"</span></span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/css</span><span class="delimiter">"</span></span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span></span><span class="inline-delimiter"><?php</span> <span class="predefined">echo</span> url_for(<span class="string"><span class="delimiter">'</span><span class="content">@customizing_css</span><span class="delimiter">'</span></span>) <span class="inline-delimiter">?></span><span class="string"><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="inline-delimiter"><?php</span> <span class="keyword">endif</span>; <span class="inline-delimiter">?></span>
</span></code></pre>
<p>上記のコードは <a class="issue tracker-2 status-8 priority-4 priority-default" title="Enhancement(機能追加・改善): customizing.css がブラウザキャッシュを使うように対処する (Rejected(差し戻し))" href="http://redmine.openpne.jp/issues/1539">#1539</a> で一度削除されている (代わりに <code>use_stylesheet('/cache/css/customizing.css')</code> を追加している) もので、恐らく誤って古い _layout.php から記述をコピーしてしまったものと見られる。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Bug(バグ) #3415 (New(新規)): 管理画面のガジェット設定ページのiframe内でフォームのエラーが赤文字で表示されない
http://redmine.openpne.jp/issues/3415
2013-10-03T03:38:02Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>アクティビティガジェットなどのガジェットの設定項目で「表示する行」の値をブラウザのインスペクタ等で不正な文字 ("aaaa" など) に書き換えて送信した場合に「正しくありません」というエラーメッセージが表示されるが、「SNS設定」画面で表示されるエラーのように赤文字で表示されない。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>ガジェットの設定画面は iframe 内に表示されているが、このページ内で backend.css が読み込まれていないのが原因である。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Task(タスク) #3394 (New(新規)): JSON APIドキュメントのアクティビティ関連のページに画像投稿・取得のサンプルを追加する
http://redmine.openpne.jp/issues/3394
2013-09-09T09:32:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-2 status-13 priority-4 priority-default closed" title="Enhancement(機能追加・改善): activity/post.json の画像投稿対応 (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3064">#3064</a> によりアクティビティ関連の API で画像投稿や画像取得が行えるような実装となったため、これに合わせて「OpenPNE3 JSON API ドキュメント」(<a class="external" href="http://houou.github.io/api.php/">http://houou.github.io/api.php/</a>) に画像投稿・取得を行うサンプルを追加する。</p>
OpenPNE 3 - Enhancement(機能追加・改善) #3393 (New(新規)): アクティビティに添付可能な画像の上限枚数を設けるべき
http://redmine.openpne.jp/issues/3393
2013-09-09T09:31:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-2 status-13 priority-4 priority-default closed" title="Enhancement(機能追加・改善): activity/post.json の images パラメータを複数枚の画像アップロードに対応させる (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3203">#3203</a> によって activity/post.json はアクティビティに対して複数枚の画像を添付できるよう修正が加えられたが、添付可能な枚数は無制限となっている。日記やコミュニティトピックなどで画像の枚数制限が設けられているように、アクティビティ画像についても同様の制限を設けるべきである。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<p>上限枚数の「デフォルト値」と「設定方法」についてそれぞれ以下のような案を提案する。</p>
<ol>
<li>デフォルト値
<ul>
<li>3 枚まで (日記やコミュニティトピックなどに合わせた値)</li>
<li>1 枚のみ (images パラメータを追加する動機になったと思われる opTimelinePlugin が、現時点では複数枚の投稿を必要としていないため)</li>
</ul>
</li>
<li>設定方法
<ul>
<li>opDiaryPlugin の <code>diary_max_image_file_num</code> のように、OpenPNE.yml に記述する設定値として用意する</li>
<li>管理画面の「SNS設定」(/pc_backend.php/sns/config) で設定する項目として用意する</li>
</ul></li>
</ol>
<p>また、当チケットで実装するアクティビティ画像の上限枚数の設定は JSON API の activity/post.json に限定したものではなく activity_image テーブルを扱う全ての機能で使用されることを想定している。</p>
OpenPNE 3 - Bug(バグ) #3357 (New(新規)): ./symfony cc を実行しても web/cache/ ディレクトリ以下に生成されたキャッシュが削除されない
http://redmine.openpne.jp/issues/3357
2013-06-06T06:40:54Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>ブラウザ等でメンバー画像 (no_image ではない) などユーザーが投稿した画像のサムネイルを表示すると web/cache/ ディレクトリ以下にサムネイル画像のキャッシュが生成されるが、ここに生成された画像が ./symfony cc コマンドによって削除されない状態となっている。</p>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>web/cache/ ディレクトリのキャッシュ削除は opApplicationConfiguration::clearWebCache() メソッドによって行われていた。このメソッドは task.cache.clear イベントの発生によって駆動するよう設計されているが、現状 task.cache.clear イベントは下記の理由により発生する事がないため、結果として一部のキャッシュが削除されない現象が発生している。</p>
<p>task.cache.clear イベントは ./symfony cc コマンド (sfCacheClearTask クラス) 実行時に <strong>アプリケーション毎に</strong> (pc_frontend, pc_backend, mobile_frontend など) 複数回呼び出されるイベントである。その仕組みは、symfony標準のディレクトリ階層の</p>
<ul>
<li>cache/
<ul>
<li>pc_frontend/
<ul>
<li>prod/</li>
<li>dev/</li>
</ul>
</li>
<li>pc_backend/
<ul>
<li>...</li>
</ul></li>
</ul></li>
</ul>
<p>に基づいて、 <strong>cache/ ディレクトリ直下</strong> に存在するアプリケーション名 (この場合、pc_frontend と pc_backend が存在する) ごとに task.cache.clear イベントを発生させるものとなっている。<br />しかし現状のOpenPNEでは、 <a class="issue tracker-1 status-5 priority-5 priority-high3 closed" title="Bug(バグ): Can't execute openpne:execute-mail-action bacause of permisson of cache/cli directory (Fixed(完了))" href="http://redmine.openpne.jp/issues/957">#957</a> の修正によって cache/ ディレクトリの階層構造がUNIXユーザー単位で分離されるようになり</p>
<ul>
<li>cache/
<ul>
<li>www-data/
<ul>
<li>pc_frontend/
<ul>
<li>dev/</li>
<li>prod/</li>
</ul>
</li>
</ul>
</li>
<li>john/
<ul>
<li>pc_frontend/
<ul>
<li>dev/</li>
<li>prod/</li>
</ul></li>
</ul></li>
</ul></li>
</ul>
<p>となっているため、www-data や john といったアプリケーションは存在しないといった判断され task.cache.clear イベントが実行されない。</p>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Enhancement(機能追加・改善) #3223 (New(新規)): 管理画面に管理者用apiKeyを実装する
http://redmine.openpne.jp/issues/3223
2012-10-11T09:10:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p>pc_frontend と同様に管理画面から使用できるAPIキーを追加する。</p>
<a name="仕様"></a>
<h3 >仕様<a href="#仕様" class="wiki-anchor">¶</a></h3>
<ul>
<li>管理画面初回アクセス時に「管理者用apiKey」を生成する (生成されるキーの仕様は pc_frontend のものと同じ)</li>
<li>管理画面の各ページに、JavaScriptから参照可能なように <code>openpne.apiKey</code> と <code>openpne.apiBase</code> の値を埋め込む</li>
<li>既に実装されているAPIは、「メンバーID + '@' + 管理者用apiKey」をapiKeyに渡された場合には指定されたメンバーからAPIが呼び出されたかのような振る舞いをする</li>
</ul>
OpenPNE 3 - Bug(バグ) #3196 (New(新規)): cacheディレクトリのパーミッションが適切でない
http://redmine.openpne.jp/issues/3196
2012-09-11T06:55:03Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>現状の実装では、cache ディレクトリ内のファイルは 0666 (rw-rw-rw-)、ディレクトリは 0777 (rwxrwxrwx) と過大な権限が設定されている。この実装については、</p>
<p><a class="external" href="http://trac.openpne.jp/ticket/3246#comment:7">http://trac.openpne.jp/ticket/3246#comment:7</a></p>
<blockquote>
<p>r10242, r10244, r10245 で修正しました。</p>
<p>基本的には symfony 側もしくは OpenPNE 側で作成するディレクトリに関しては 0777 、ファイルに関しては 0666 というパーミッションになるように修正をおこなっています。</p>
<p>この修正は正当なユーザ以外のファイル・ディレクトリに関する操作を許してしまうので、セキュリティ面では弱くなってしまいます。これはあくまでより多くの環境で使用していただくための措置であり、決して恒久的な対処であってはならないことを念頭に置かねばなりません。</p>
</blockquote>
<p>と書かれており、適切なパーミッションへの修正が必要である。</p>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Bug(バグ) #1855 (New(新規)): cache以下のディレクトリがユーザ毎に完全に分離できていない
http://redmine.openpne.jp/issues/1855
2010-12-17T07:01:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>symfony コマンドを使用してタスクを実行すると、キャッシュディレクトリにユーザ毎に生成されるディレクトリを無視して ./cache/config/OpenPNE.yml.php や ./cache/project_autoload.cache のようなファイルが生成されてしまいます。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>ユーザ毎の sf_cache_dir の変更は opApplicationConfiguration::setCacheDir() で行われていますが、symfony コマンドでのタスクの実行ではタスクが実行されるまでの初期化中に opApplicationConfiguration が使われていません。そのため、sf_cache_dir への変更が行われないままキャッシュが生成されてます。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>opApplicationConfiguration::setCacheDir() メソッドを opProjectConfiguration クラスに移動する</p>