OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2017-02-17T08:36:57Z
OpenPNE Issue Tracking System
Redmine
opDiaryPlugin - Bug(バグ) #4161 (New(新規)): MySQLのSTRICT_TRANS_TABLESが有効な状態でテスト用fixtureのロードに失敗する
http://redmine.openpne.jp/issues/4161
2017-02-17T08:36:57Z
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 の読み込みを必要とするテストコードを実行すると下記のエラーが発生する:</p>
<pre>
$ php plugins/opDiaryPlugin/test/unit/model/DiaryTest.php
[...]
Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[HY000]: General error: 1364 Field 'last_comment_time' doesn't have a default value' 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 dia...', Array)
#3 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php(647): Doctrine_Connection->insert(Object(DiaryCommentUpdateTable), Array)
#4 /vagr in /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1082
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a href="https://github.com/tejimaya/opDiaryPlugin/blob/a72db784a0dc3fea8f3a9d40a274c11db6253213/test/fixtures/diaries.yml#L110-L111" class="external">test/fixtures/diaries.yml#L110-L111</a>:<br /><pre><code class="php syntaxhl"><span class="CodeRay"><span class="inline-delimiter"><?php</span> <span class="keyword">for</span> (<span class="local-variable">$i</span> = <span class="integer">1</span>; <span class="local-variable">$i</span> <= <span class="integer">60</span>; <span class="local-variable">$i</span>++): <span class="inline-delimiter">?></span>
diary_for_member1_<span class="inline-delimiter"><?php</span> <span class="predefined">echo</span> <span class="local-variable">$i</span> <span class="inline-delimiter">?></span>:
Member: member1
title: "title:<span class="inline-delimiter"><?php</span> <span class="predefined">echo</span> <span class="local-variable">$i</span> <span class="inline-delimiter">?></span> by member1"
body: "body:<span class="inline-delimiter"><?php</span> <span class="predefined">echo</span> <span class="local-variable">$i</span> <span class="inline-delimiter">?></span> by member1"
created_at: "2009-03-<span class="inline-delimiter"><?php</span> <span class="predefined">printf</span>(<span class="string"><span class="delimiter">'</span><span class="content">%02d</span><span class="delimiter">'</span></span>, <span class="local-variable">$i</span>) <span class="inline-delimiter">?></span> 10:00:00"
updated_at: "2009-03-<span class="inline-delimiter"><?php</span> <span class="predefined">printf</span>(<span class="string"><span class="delimiter">'</span><span class="content">%02d</span><span class="delimiter">'</span></span>, <span class="local-variable">$i</span>) <span class="inline-delimiter">?></span> 10:00:00"
<span class="inline-delimiter"><?php</span> <span class="keyword">endfor</span>; <span class="inline-delimiter">?></span>
</span></code></pre></p>
<p>上記のように記述された fixture は次のような YAML を出力します。</p>
<pre><code class="yaml syntaxhl"><span class="CodeRay"> <span class="key">diary_for_member1_1</span>:
<span class="key">Member</span>: <span class="string"><span class="content">member1</span></span>
<span class="key">title</span>: <span class="string"><span class="delimiter">"</span><span class="content">title:1 by member1</span><span class="delimiter">"</span></span>
<span class="key">body</span>: <span class="string"><span class="delimiter">"</span><span class="content">body:1 by member1</span><span class="delimiter">"</span></span>
<span class="key">created_at</span>: <span class="string"><span class="delimiter">"</span><span class="content">2009-03-01 10:00:00</span><span class="delimiter">"</span></span>
<span class="key">updated_at</span>: <span class="string"><span class="delimiter">"</span><span class="content">2009-03-01 10:00:00</span><span class="delimiter">"</span></span>
<span class="head"><span class="head">...</span></span>
<span class="key">diary_for_member1_60</span>:
<span class="key">Member</span>: <span class="string"><span class="content">member1</span></span>
<span class="key">title</span>: <span class="string"><span class="delimiter">"</span><span class="content">title:60 by member1</span><span class="delimiter">"</span></span>
<span class="key">body</span>: <span class="string"><span class="delimiter">"</span><span class="content">body:60 by member1</span><span class="delimiter">"</span></span>
<span class="key">created_at</span>: <span class="string"><span class="delimiter">"</span><span class="content">2009-03-60 10:00:00</span><span class="delimiter">"</span></span>
<span class="key">updated_at</span>: <span class="string"><span class="delimiter">"</span><span class="content">2009-03-60 10:00:00</span><span class="delimiter">"</span></span>
</span></code></pre>
<p>created_at および updated_at にセットされる <code>"2009-03-60 10:00:00"</code> は不正な日付のため、<code>STRICT_TRANS_TABLES</code> が有効な MySQL ではエラーが発生する。</p>
opWebAPIPlugin - Bug(バグ) #4156 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態でコミュニティ一覧のフィードを取得するとエラー
http://redmine.openpne.jp/issues/4156
2017-02-16T11:33:52Z
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>コミュニティ一覧のフィード (<code>/api.php/feeds/community</code>) を取得すると下記のエラーが発生する:</p>
<pre>
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'openpne.c3.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by.
</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">SELECT</span> <span class="keyword">DISTINCT</span> c3.id
<span class="keyword">FROM</span> community c3
<span class="keyword">LEFT</span> <span class="keyword">JOIN</span> community_member c4 <span class="keyword">ON</span> c3.id = c4.community_id
<span class="keyword">GROUP</span> <span class="keyword">BY</span> c4.community_id
<span class="keyword">ORDER</span> <span class="keyword">BY</span> c3.created_at <span class="directive">DESC</span>
LIMIT <span class="integer">25</span>
</span></code></pre>
<p>上記のクエリで、<code>c3.id</code> が GROUP BY に含まれていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
opRankingPlugin - Bug(バグ) #4155 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態でコミュニティ盛り上がり度ランキング画面を表示す...
http://redmine.openpne.jp/issues/4155
2017-02-16T07:20:26Z
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[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'openpne.c.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
</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">SELECT</span> c.id <span class="keyword">AS</span> c__id, c2.id <span class="keyword">AS</span> c2__id, c2.community_id <span class="keyword">AS</span> c2__1, <span class="predefined">COUNT</span>(*) <span class="keyword">AS</span> c__0, c2.community_id <span class="keyword">AS</span> c2__1
<span class="keyword">FROM</span> community_topic_comment c
<span class="keyword">LEFT</span> <span class="keyword">JOIN</span> community_topic c2 <span class="keyword">ON</span> c.community_topic_id = c2.id
<span class="keyword">WHERE</span> (c.created_at >= <span class="string"><span class="delimiter">'</span><span class="content">2017-02-15</span><span class="delimiter">'</span></span> <span class="keyword">AND</span> c.created_at < <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16</span><span class="delimiter">'</span></span>)
<span class="keyword">GROUP</span> <span class="keyword">BY</span> c2.community_id
<span class="keyword">ORDER</span> <span class="keyword">BY</span> <span class="predefined">COUNT</span>(*) <span class="directive">DESC</span>
LIMIT <span class="integer">10</span>
</span></code></pre>
<p>上記のクエリで、<code>c.id</code> が GROUP BY に含まれていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
opRankingPlugin - Bug(バグ) #4154 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態でコミュニティ参加人数ランキング画面を表示するとエラー
http://redmine.openpne.jp/issues/4154
2017-02-16T07:18:21Z
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[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'openpne.c.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by.
</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">SELECT</span> c.id <span class="keyword">AS</span> c__id, c.community_id <span class="keyword">AS</span> c__community_id, <span class="predefined">COUNT</span>(*) <span class="keyword">AS</span> c__0
<span class="keyword">FROM</span> community_member c
<span class="keyword">GROUP</span> <span class="keyword">BY</span> c.community_id
<span class="keyword">ORDER</span> <span class="keyword">BY</span> <span class="predefined">COUNT</span>(*) <span class="directive">DESC</span>
LIMIT <span class="integer">10</span>
</span></code></pre>
<p>上記のクエリで、<code>c.id</code> が GROUP BY に含まれていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
opRankingPlugin - Bug(バグ) #4153 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態でフレンド数ランキング画面を表示するとエラー
http://redmine.openpne.jp/issues/4153
2017-02-16T07:16:05Z
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[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'openpne.m.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
</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">SELECT</span> m.id <span class="keyword">AS</span> m__id, m.member_id_to <span class="keyword">AS</span> m__member_id_to, <span class="predefined">COUNT</span>(*) <span class="keyword">AS</span> m__0
<span class="keyword">FROM</span> member_relationship m
<span class="keyword">LEFT</span> <span class="keyword">JOIN</span> member m2 <span class="keyword">ON</span> m.member_id_to = m2.id
<span class="keyword">WHERE</span> (m.is_friend = <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span> <span class="keyword">AND</span> m2.is_active = <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>)
<span class="keyword">GROUP</span> <span class="keyword">BY</span> m2.id
<span class="keyword">ORDER</span> <span class="keyword">BY</span> <span class="predefined">COUNT</span>(*) <span class="directive">DESC</span>
LIMIT <span class="integer">10</span>
</span></code></pre>
<p>上記のクエリで、<code>m.id</code> が GROUP BY に含まれていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
opRankingPlugin - Bug(バグ) #4152 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態でアクセス数ランキング画面を表示するとエラー
http://redmine.openpne.jp/issues/4152
2017-02-16T07:02:03Z
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[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'openpne.a.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
</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">SELECT</span> a.id <span class="keyword">AS</span> a__id, a.member_id_to <span class="keyword">AS</span> a__member_id_to, <span class="predefined">COUNT</span>(*) <span class="keyword">AS</span> a__0
<span class="keyword">FROM</span> ashiato a
<span class="keyword">WHERE</span> (a.created_at >= <span class="string"><span class="delimiter">'</span><span class="content">2017-02-15</span><span class="delimiter">'</span></span> <span class="keyword">AND</span> a.created_at < <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16</span><span class="delimiter">'</span></span>)
<span class="keyword">GROUP</span> <span class="keyword">BY</span> a.member_id_to
<span class="keyword">ORDER</span> <span class="keyword">BY</span> <span class="predefined">COUNT</span>(*) <span class="directive">DESC</span>
LIMIT <span class="integer">10</span>
</span></code></pre>
<p>上記のクエリで、<code>a.id</code> が GROUP BY に含まれていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
opDiaryPlugin - Bug(バグ) #4151 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態で「日記コメント記入履歴」ガジェットを表示するとエラー
http://redmine.openpne.jp/issues/4151
2017-02-16T06:44:32Z
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: 3065 Expression #1 of ORDER BY clause is not in SELECT list, references column 'openpne.d3.last_comment_time' which is not in SELECT list; this is incompatible with DISTINCT
</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">SELECT</span> <span class="keyword">DISTINCT</span> d3.diary_id
<span class="keyword">FROM</span> diary_comment_update d3
<span class="keyword">INNER</span> <span class="keyword">JOIN</span> diary d4 <span class="keyword">ON</span> d3.diary_id = d4.id
<span class="keyword">LEFT</span> <span class="keyword">JOIN</span> member m3 <span class="keyword">ON</span> d4.member_id = m3.id
<span class="keyword">LEFT</span> <span class="keyword">JOIN</span> member_relationship m4 <span class="keyword">ON</span> m3.id = m4.member_id_to <span class="keyword">AND</span> (m4.member_id_from = <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>)
<span class="keyword">WHERE</span> d3.member_id = <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>
<span class="keyword">AND</span> (
d4.public_flag = <span class="string"><span class="delimiter">'</span><span class="content">4</span><span class="delimiter">'</span></span> <span class="keyword">OR</span>
d4.public_flag = <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span> <span class="keyword">OR</span>
(d4.public_flag = <span class="string"><span class="delimiter">'</span><span class="content">2</span><span class="delimiter">'</span></span> <span class="keyword">AND</span> m4.is_friend = <span class="integer">1</span>)
)
<span class="keyword">AND</span> (m3.is_active = <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span> <span class="keyword">OR</span> m3.is_active <span class="keyword">IS</span> <span class="predefined-constant">NULL</span>)
<span class="keyword">ORDER</span> <span class="keyword">BY</span> d3.last_comment_time <span class="directive">DESC</span>
LIMIT <span class="integer">5</span>
</span></code></pre>
<p>上記のクエリで、ORDER BY で使用するカラムが DISTINCT の対象に含まれていないためにエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
opAshiatoPlugin - Bug(バグ) #4150 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態であしあとページを開くとエラーが発生する
http://redmine.openpne.jp/issues/4150
2017-02-16T05:09:58Z
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>
<pre>
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'openpne.a.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
</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">SELECT</span> a.id <span class="keyword">AS</span> a__id, a.r_date <span class="keyword">AS</span> a__r_date <span class="keyword">FROM</span> ashiato a <span class="keyword">WHERE</span> (a.member_id_to = <span class="error">?</span>) <span class="keyword">GROUP</span> <span class="keyword">BY</span> a.r_date <span class="directive">DESC</span> LIMIT <span class="integer">30</span>
</span></code></pre>
<p>実行される上記のクエリについて、GROUP BY で指定されていない <code>a.id</code> が SELECT リストで参照されていることが原因。</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(バグ) #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>
opOpenSocialPlugin - Bug(バグ) #3932 (New(新規)): pc,mobile両方のContentを持つアプリがホーム画面およびプロフィール画面に表示されない
http://redmine.openpne.jp/issues/3932
2016-04-20T10:32:46Z
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="https://gist.github.com/upsilon/951203">https://gist.github.com/upsilon/951203</a> のように PC, mobile 向けの両方の Content を持つアプリが、ホーム画面とプロフィール画面の「アプリケーションボックス」ガジェットの位置に表示されない。</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/plg-open-social/repository/revisions/6d81bffd/entry/apps/pc_frontend/modules/application/actions/components.class.php#L106">source:apps/pc_frontend/modules/application/actions/components.class.php@6d81bffd#L106</a></p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">function</span> <span class="function">executeRenderHomeApplications</span>(sfWebRequest <span class="local-variable">$request</span>)
{
<span class="local-variable">$this</span>->memberApplications = <span class="constant">Doctrine</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">MemberApplication</span><span class="delimiter">'</span></span>)->getMemberApplications(<span class="predefined-constant">null</span>, <span class="predefined-constant">null</span>, <span class="predefined-constant">true</span>, <span class="predefined-constant">true</span>, <span class="predefined-constant">false</span>);
}
</span></code></pre>
<p>ホーム画面でアプリケーションを表示するアクションでは、上記のように <code>MemberApplicationTable::getMemberApplications()</code> メソッドの引数 <code>$isMobile</code> に false を指定している。</p>
<p><code>MemberApplicationTable::getMemberApplications()</code> メソッドの引数 <code>$isPc</code>, <code>$isMobile</code> は true, false, null の三値が想定されており、true, false の場合は <code>application.is_pc = ?</code> のような条件が加わり、null の場合は is_pc, is_mobile のそれぞれに対する条件が付かなくなる。<br />この場合、<code>$isPc</code> に true、<code>$isMobile</code> に false が指定されているため、<code>application.is_pc = 1 AND application.is_mobile = 0</code> のような条件が加わることになり、is_mobile が 1 であるアプリケーションは is_pc の値に関わらず条件に該当しなくなる。</p>
<p>このことが、mobile 向け Content を持つアプリケーションが PC 向けの Content も持つか否かに関わらずホーム画面およびプロフィール画面で非表示となる原因である。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>pc_frontend のホーム画面およびプロフィール画面の場合、<code>application.is_mobile</code> の値に関わらず <code>application.is_pc = 1</code> のみ満たしていれば十分であるため、<code>MemberApplicationTable::getMemberApplications()</code> メソッドの引数 <code>$isMobile</code> には false ではなく null に修正する必要がある。</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 - 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>
OpenPNE3 Debian Package - Bug(バグ) #2140 (New(新規)): openpne3パッケージをインストール後にpurgeしても /var/lib/openpn...
http://redmine.openpne.jp/issues/2140
2011-05-30T21:55:04Z
Youichi Kimura
kim.upsilon@bucyou.net
opAshiatoPlugin - Bug(バグ) #1978 (New(新規)): MySQL以外のDBMS上であしあと一覧がエラーになる
http://redmine.openpne.jp/issues/1978
2011-03-26T05:48:58Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>あしあと一覧ページをSQLite使用のOpenPNE3で実行すると、以下のようなエラーが出ます。<br /><pre>
mod_fcgid: stderr: SQLSTATE[HY000]: General error: 1 near "DESC": syntax error. Failing Query: "SELECT a.id AS a__id, a.r_date AS a__r_date FROM ashiato a WHERE (a.member_id_to = ?) GROUP BY a.r_date DESC LIMIT 30", referer: http://sns.localhost/sqlite/
</pre></p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>「GROUP BY a.r_date DESC」といった構文がMySQL依存のものであるため、他のDBMSでエラーになる。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>PluginAshiatoTable::getAshiatoListPager() 内で実行されるクエリを修正する。</p>
<pre><code class="diff syntaxhl"><span class="CodeRay"><span class="line head"><span class="head">--- </span><span class="filename">a/lib/model/doctrine/PluginAshiatoTable.class.php</span></span>
<span class="line head"><span class="head">+++ </span><span class="filename">b/lib/model/doctrine/PluginAshiatoTable.class.php</span></span>
<span class="change"><span class="change">@@</span> -23,7 +23,7 <span class="change">@@</span></span> <span class="keyword">class</span> <span class="class">PluginAshiatoTable</span> <span class="keyword">extends</span> <span class="constant">Doctrine_Table</span>
<span class="keyword">public</span> <span class="keyword">function</span> <span class="function">getAshiatoListPager</span>(<span class="local-variable">$memberId</span>, <span class="local-variable">$page</span> = <span class="integer">1</span>, <span class="local-variable">$size</span> = <span class="integer">20</span>)
{
<span class="local-variable">$day_list</span> = <span class="predefined">array</span>();
<span class="local-variable">$q</span> = <span class="local-variable">$this</span>->createQuery()
->select(<span class="string"><span class="delimiter">'</span><span class="content">id, r_date</span><span class="delimiter">'</span></span>)
->where(<span class="string"><span class="delimiter">'</span><span class="content">member_id_to = ?</span><span class="delimiter">'</span></span>, <span class="local-variable">$memberId</span>)
<span class="line delete"><span class="delete">-</span> -><span class="eyecatcher">group</span>By(<span class="string"><span class="delimiter">'</span><span class="content">r_date DESC</span><span class="delimiter">'</span></span>)</span>
<span class="line insert"><span class="insert">+</span> -><span class="eyecatcher">order</span>By(<span class="string"><span class="delimiter">'</span><span class="content">r_date DESC</span><span class="delimiter">'</span></span>)</span>
->limit(<span class="local-variable">$size</span>);
</span></code></pre>
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>