OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2017-04-13T05:59:31Z
OpenPNE Issue Tracking System
Redmine
OpenPNE 3 - Bug(バグ) #4187 (Fixed(完了)): Class 'sfPearRest13' not found のエラーによりプラグインのインストールに失敗する
http://redmine.openpne.jp/issues/4187
2017-04-13T05:59:31Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>master ブランチ (<a class="changeset" title="Merge remote-tracking branches 'upsilon/update-pear', 'upsilon/t-4178' and 'upsilon/t-4179'" href="http://redmine.openpne.jp/projects/op3/repository/revisions/8cbcdac4e0716ccfe0ed2f0dd1ae3b77175924fb">8cbcdac4</a>) にて、opPlugin:install タスクを実行すると一部のプラグインで Fatal error により異常終了する問題が起きている。</p>
<pre>
$ php symfony opPlugin:install opTimelinePlugin -r 1.2.6.1
PHP Warning: Declaration of sfPearRest::downloadHttp($url, $lastmodified = NULL, $accept = false) should be compatible with PEAR_REST::downloadHttp($url, $lastmodified = NULL, $accept = false, $channel = false) in /vagrant/lib/vendor/symfony/lib/plugin/sfPearRest.class.php on line 30
PHP Notice: Only variables should be passed by reference in /vagrant/lib/vendor/symfony/lib/plugin/sfSymfonyPluginManager.class.php on line 186
PHP Notice: Only variables should be passed by reference in /vagrant/lib/plugin/opPluginManager.class.php on line 220
>> plugin installing plugin "opTimelinePlugin"
PHP Warning: Declaration of opPluginDownloader::getDependency2Object(&$c, $i, $p, $s) should be compatible with & PEAR_Downloader::getDependency2Object(&$c, $i, $p, $s) in /vagrant/lib/plugin/opPluginDownloader.class.php on line 18
>> sfPearFrontendPlugin downloading opTimelinePlugin-1.2.6.1.tgz ...
>> sfPearFrontendPlugin Starting to download opTimelinePlugin-1.2.6.1.tgz (235,547
>> sfPearFrontendPlugin bytes)
>> sfPearFrontendPlugin .
[...]
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin ...done: 235,547 bytes
>> sfPearFrontendPlugin WARNING: channel "plugins.openpne.jp" has updated its
>> sfPearFrontendPlugin protocols, use "pear channel-update plugins.openpne.jp" to
>> sfPearFrontendPlugin update
PHP Fatal error: Uncaught Error: Class 'sfPearRest13' not found in /vagrant/lib/vendor/symfony/lib/plugin/sfPearConfig.class.php:27
Stack trace:
#0 /vagrant/lib/vendor/PEAR/PEAR/Downloader.php(1022): sfPearConfig->getREST('1.3', Array)
#1 /vagrant/lib/vendor/PEAR/PEAR/Downloader/Package.php(637): PEAR_Downloader->_getDepPackageDownloadUrl(Array, Array)
#2 /vagrant/lib/vendor/PEAR/PEAR/Downloader/Package.php(466): PEAR_Downloader_Package->_detect2Dep(Array, Array, 'required', Array)
#3 /vagrant/lib/vendor/PEAR/PEAR/Downloader/Package.php(380): PEAR_Downloader_Package->_detect2(Array, Array, Array, Array)
#4 /vagrant/lib/vendor/PEAR/PEAR/Downloader.php(412): PEAR_Downloader_Package->detectDependencies(Array)
#5 /vagrant/lib/vendor/symfony/lib/plugin/sfPluginManager.class.php(207): PEAR_Downloader->download(Array)
#6 /vagrant/lib/vendor/symfony/lib/plugin/sfPluginManager.class.php(112): sfPluginManager->doInstallPlugin('opTimelinePlugi...', Array)
#7 /vagrant/lib/vendor/symfony/lib/task/plugin/sfPluginInstallTask.class.php(122): in /vagrant/lib/vendor/symfony/lib/plugin/sfPearConfig.class.php on line 27
</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(バグ) #3445 (Won't fix(対応せず)): #927 の修正によって無関係なCommunityMemberインスタンスが解放される問題の回避
http://redmine.openpne.jp/issues/3445
2013-10-09T06:49:57Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>Doctrine_Record::free() メソッドには <a class="external" href="https://gist.github.com/upsilon/6896385">https://gist.github.com/upsilon/6896385</a> のような Doctrine のバグと思わしき現象が存在している。<br /><a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Enhancement(機能追加・改善): will memory over to be if all members join to community when has many members to the SNS. (SNSのメン... (Fixed(完了))" href="http://redmine.openpne.jp/issues/927">#927</a> でのメモリリーク改善のために行った <a class="changeset" title="improved performance while join member to community (fixes #927)" href="http://redmine.openpne.jp/projects/op3/repository/revisions/d6956cde880be65aefc802e01b070bb9d054145f">d6956cde880be65aefc802e01b070bb9d054145f</a> の修正は CommunityTableTest.php などのテストコードでこの現象を引き起こしており、例えば下記のようなコードを実行するとエラーが発生する。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$communityMember1</span> = <span class="constant">Doctrine_Core</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">CommunityMember</span><span class="delimiter">'</span></span>)
->findOneByCommunityIdAndMemberId(<span class="integer">1</span>, <span class="integer">1</span>);
<span class="constant">Doctrine_Core</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">CommunityMember</span><span class="delimiter">'</span></span>)->isMember(<span class="integer">1</span>, <span class="integer">1</span>);
<span class="predefined">print</span> <span class="local-variable">$communityMember1</span>->community_id; <span class="comment">// エラー</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>この問題を根本的に解決するためには Doctrine 自体に手を加える必要があるため、ここでは不具合の回避のための修正を行う。具体的には <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Enhancement(機能追加・改善): will memory over to be if all members join to community when has many members to the SNS. (SNSのメン... (Fixed(完了))" href="http://redmine.openpne.jp/issues/927">#927</a> で行ったメモリリーク改善の効果を落とさないように CommunityMember オブジェクトに対する free() メソッドの呼び出しを最小限に抑えるための修正を施す。</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(バグ) #3273 (Fixed(完了)): activity/search.json?member_id=? で特定メンバーのアクティビティを取得すると500エ...
http://redmine.openpne.jp/issues/3273
2012-12-06T11:08:18Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>MySQL を使用している SNS で、API を使用して <a class="external" href="http://sns.example.com/api.php/activity/search.json?member_id=1">http://sns.example.com/api.php/activity/search.json?member_id=1</a> のように特定メンバーのアクティビティを取得しようとすると Internal Server Error が返ってしまう場合がある。</p>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>opActivityQueryBuilder::buildMemberQuery() 内で andWhereIn メソッドを使用している。ここで生成されるクエリはサブクエリとして使用されるため <a class="issue tracker-1 status-1 priority-4 priority-default" title="Bug(バグ): サブクエリのWHERE節に「field IN ?」の形式のDQLがあると Invalid parameter number エラーが発生する (New(新規))" href="http://redmine.openpne.jp/issues/3135">#3135</a> で報告されているように不正なクエリが生成されてしまう。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">protected</span> <span class="keyword">function</span> <span class="function">buildMemberQuery</span>(<span class="local-variable">$query</span>, <span class="local-variable">$memberId</span> = <span class="predefined-constant">null</span>, <span class="local-variable">$publicFlag</span> = <span class="constant">ActivityDataTable</span>::<span class="constant">PUBLIC_FLAG_SNS</span>)
{
<span class="keyword">if</span> (<span class="predefined">is_array</span>(<span class="local-variable">$memberId</span>))
{
<span class="local-variable">$query</span>->andWhereIn(<span class="string"><span class="delimiter">'</span><span class="content">a.member_id</span><span class="delimiter">'</span></span>, <span class="local-variable">$memberId</span>);
}
<span class="keyword">elseif</span> (<span class="local-variable">$memberId</span> <span class="keyword">instanceof</span> <span class="constant">Doctrine_Query</span>)
{
<span class="local-variable">$query</span>->andWhere(<span class="string"><span class="delimiter">'</span><span class="content">a.member_id IN (</span><span class="delimiter">'</span></span>.<span class="local-variable">$memberId</span>->getDql().<span class="string"><span class="delimiter">'</span><span class="content">)</span><span class="delimiter">'</span></span>);
}
<span class="keyword">elseif</span> (<span class="predefined">is_scalar</span>(<span class="local-variable">$memberId</span>))
{
<span class="local-variable">$query</span>->andWhere(<span class="string"><span class="delimiter">'</span><span class="content">a.member_id = ?</span><span class="delimiter">'</span></span>, <span class="local-variable">$memberId</span>);
}
<span class="local-variable">$query</span>->andWhereIn(<span class="string"><span class="delimiter">'</span><span class="content">a.public_flag</span><span class="delimiter">'</span></span>, <span class="local-variable">$this</span>->table->getViewablePublicFlags(<span class="local-variable">$publicFlag</span>));
<span class="keyword">return</span> <span class="local-variable">$query</span>;
}
</span></code></pre>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>opActivityQueryBuilder::buildMemberQuery() メソッドに <a class="issue tracker-1 status-1 priority-4 priority-default" title="Bug(バグ): サブクエリのWHERE節に「field IN ?」の形式のDQLがあると Invalid parameter number エラーが発生する (New(新規))" href="http://redmine.openpne.jp/issues/3135">#3135</a> の問題を回避する修正を施す</p>
OpenPNE 3 - Bug(バグ) #3260 (Won't fix(対応せず)): activity/search.json に自分の投稿した「公開しない」設定のアクティビティが出力されない
http://redmine.openpne.jp/issues/3260
2012-11-15T10:00:09Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>公開範囲を「公開しない」に設定した自分のアクティビティ投稿が activity/search.json に出力されない。</p>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>apps/api/modules/activity/actions/actions.class.php の executeSearch メソッドにて、アクティビティを取得するクエリに「フレンドのみ公開」「公開しない」設定の投稿が含まれていないため。</p>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>target 及び member_id パラメータが指定されていない場合は、フレンドの投稿と自分自身の投稿を含める条件をクエリに追加する。</p>
OpenPNE 3 - Bug(バグ) #3235 (Won't fix(対応せず)): activity/post.json に文字数制限を越えた文字列を送信してもエラーにならない
http://redmine.openpne.jp/issues/3235
2012-11-01T08:26:19Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>activity/post.json について、activity_data の body の最大長である 140 文字を越えたテキストを送信してもエラーとならず、正常に終了してしまう。<br />投稿されたテキストは DBMS 側で 140 文字に切り落とされ (<a href="http://dev.mysql.com/doc/refman/5.1/ja/char.html" class="external">参考</a>) 、activity/search.json 等で取得すると切り落とされた状態のテキストが出力される。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>activity/post.json にて文字数制限のチェックを行っていないため。</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(バグ) #3202 (Won't fix(対応せず)): ActivityDataTable::updateActivity() メソッドで画像付きのアクティビテ...
http://redmine.openpne.jp/issues/3202
2012-09-14T08:47:29Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>ActivityDataTable::updateActivity() メソッドには、オプションとして file_id を含む配列を渡すことで画像付きのアクティビティを作成する機能があるが、このオプションを使用すると下記のようなエラーが発生してしまう。</p>
<pre>
SQLSTATE[23000]: Integrity constraint violation: 19 activity_image.mime_type may not be NULL, referer: http://sns.localhost:18080/sqlite/
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$activityImage</span> = <span class="keyword">new</span> <span class="constant">ActivityImage</span>();
<span class="keyword">if</span> (<span class="predefined">isset</span>(<span class="local-variable">$image</span>[<span class="string"><span class="delimiter">'</span><span class="content">file_id</span><span class="delimiter">'</span></span>]))
{
<span class="local-variable">$activityImage</span>->setFileId(<span class="local-variable">$image</span>[<span class="string"><span class="delimiter">'</span><span class="content">file_id</span><span class="delimiter">'</span></span>]);
}
<span class="keyword">elseif</span> (<span class="predefined">isset</span>(<span class="local-variable">$image</span>[<span class="string"><span class="delimiter">'</span><span class="content">uri</span><span class="delimiter">'</span></span>]) && <span class="predefined">isset</span>(<span class="local-variable">$image</span>[<span class="string"><span class="delimiter">'</span><span class="content">mime_type</span><span class="delimiter">'</span></span>]))
{
<span class="local-variable">$activityImage</span>->setUri(<span class="local-variable">$image</span>[<span class="string"><span class="delimiter">'</span><span class="content">uri</span><span class="delimiter">'</span></span>]);
<span class="local-variable">$activityImage</span>->setMimeType(<span class="local-variable">$image</span>[<span class="string"><span class="delimiter">'</span><span class="content">mime_type</span><span class="delimiter">'</span></span>]);
}
</span></code></pre>
<p>ActivityDataTable::updateActivity() メソッド内の images オプションを扱う上記のコードで、file_id をオプションに指定した画像について activity_image.mime_type の値が設定されておらず、activity_image テーブルの NOT NULL 制約によってエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>添付される画像の MIME タイプを file テーブルから取得し activity_image.mime_type にセットする。</p>
OpenPNE 3 - Bug(バグ) #3197 (Invalid(無効)): cacheディレクトリ内のツリー階層を変更すべきではない
http://redmine.openpne.jp/issues/3197
2012-09-11T07:31:17Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>OpenPNE3の現在の実装では、cacheディレクトリ内のツリー階層は下記のようになっている。</p>
<ul>
<li>cache/
<ul>
<li>(ユーザー名1)/
<ul>
<li>config/</li>
<li>pc_frontend/
<ul>
<li>dev/</li>
<li>prod/</li>
</ul>
</li>
<li>pc_backend/
<ul>
<li>prod/</li>
</ul>
</li>
</ul>
</li>
<li>(ユーザー名2)/
<ul>
<li>config/</li>
<li>mobile_frontend/
<ul>
<li>dev/</li>
</ul></li>
</ul></li>
</ul></li>
</ul>
<p>本来symfony1.4で想定されているツリー階層では下記のようになるはずである。</p>
<ul>
<li>cache/
<ul>
<li>config/</li>
<li>pc_frontend/
<ul>
<li>dev/</li>
<li>prod/</li>
</ul>
</li>
<li>pc_backend/
<ul>
<li>prod/</li>
</ul>
</li>
<li>mobile_frontend/
<ul>
<li>dev/</li>
</ul></li>
</ul></li>
</ul>
<p>これは <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ディレクトリ内の構造が標準と異なることによって幾つかの不具合が発生している。具体的には、</p>
<ul>
<li><code>./symfony cc</code> 実行中に対象となるアプリケーションにアクセスできないようにする(503 Service Temporarily Unavailable を返す)ためのロック機構が機能していない</li>
<li>キャッシュを削除するアプリケーションごとに発生する task.cache.clear イベントが発生しない
<ul>
<li>これによって opApplicationConfiguration::clearPluginCache() や opApplicationConfiguration::clearWebCache() が実行されていない</li>
</ul></li>
</ul>
<p>といった問題が起きている。</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>
OpenPNE 3 - Bug(バグ) #3165 (Won't fix(対応せず)): ./symfony ccでキャッシュをクリアした直後だけメッセージが翻訳されずに表示される
http://redmine.openpne.jp/issues/3165
2012-08-15T02:31:11Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><code>./symfony cc</code> を実行した後にブラウザでホーム画面等を閲覧すると、ナビゲーションと SnsTerm で設定される語句を除いてメッセージが翻訳されずに表示されてしまう。リロードすると正常に設定された言語でメッセージが表示される。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>git bisect を使用して原因となるコミットを探索した結果 <a class="changeset" title="fixed for coding standard (fixes #2698)" href="http://redmine.openpne.jp/projects/op3/repository/revisions/94515d98f87747603b42b4397c0561039bff011a">94515d98f87747603b42b4397c0561039bff011a</a> に行き着いた。</p>
<p>このコミット内には <code>b/lib/i18n/opI18N.class.php</code> に対する下記の修正ミスがあり、これを正したところ上記の現象は起きなかったためこの変更が原因と思われる。</p>
<pre><code class="diff syntaxhl"><span class="CodeRay"><span class="change"><span class="change">@@</span> -74,7 +74,7 <span class="change">@@</span></span> class opI18N extends sfI18N
{
$this->generateApplicationMessages($dirs);
<span class="line delete"><span class="delete">-</span> if (<span class="eyecatcher">null === $dirs</span>)</span>
<span class="line insert"><span class="insert">+</span> if (<span class="eyecatcher">!is_null($dirs)</span>)</span>
{
$this->messageSource = $this->createMessageSource();
}
</span></code></pre>
<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(バグ) #3052 (Won't fix(対応せず)): activity/community.json 実行時にDoctrineでエラーが発生する場合がある
http://redmine.openpne.jp/issues/3052
2012-05-10T06:56:21Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>activity/community.json 呼び出し時に下記のようなエラーがhttpdのエラーログに出力されて500エラーとなる。<br /><pre>
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
</pre></p>
<p>is_active: 0 のメンバー(仮登録中のメンバー)が1人以上いる場合に発生する。</p>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>マイフレンドまで公開のアクティビティを取得するための条件の中で、is_active: 0 のメンバーを対象外とするためにサブクエリ内に <code>member_id_to NOT IN ?</code> を追加していたが、この形式の DQL を Doctrine が正しくパースできず、最終的にパラメーター数が一致しない SQL とパラメーターの組が生成されていたためにエラーとなっていた。</p>
<p>inactiveIds が空の場合は opDoctrineQuery::andWhereIn() により <code>->andWhere('0 = 1');</code> に書き換えられるため問題が発生しない。</p>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>問題箇所のクエリでは Member モデルを必ず leftJoin しているため、opActivateListener により is_active のチェックが自動的に追加される。</p>
<p>このクエリにおいて is_active: 0 のメンバーを除外するには Member に対する絞り込みのみで十分であるため、マイフレンドまで公開のアクティビティを抽出する部分からは is_active: 0 を除外する条件を冗長と判断し削除した。</p>
opDiaryPlugin - Bug(バグ) #2001 (Fixed(完了)): DBMSにSQLiteを使用すると、他人の日記にコメントを書き込む時にエラーが発生する
http://redmine.openpne.jp/issues/2001
2011-04-10T13:03:00Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>DBMSにSQLiteを使用しているSNSで、他人の日記にコメントを書き込むと<br /><pre>
SQLSTATE[23000]: Integrity constraint violation: 19 diary_comment_update.last_comment_time may not be NULL, referer: http://sns.localhost/sqlite/diary/7
</pre><br />のようなエラーが発生する</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>diary_comment_update.last_comment_time にNOT NULL制約があるが、PluginDiaryCommentUpdateTable::update() メソッドで last_comment_time に値がセットされないままINSERTを実行しようとしている。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>INSERT前に last_comment_time に値をセットする処理を追加<br /><pre><code class="diff syntaxhl"><span class="CodeRay"><span class="line head"><span class="head">--- </span><span class="filename">a/lib/model/doctrine/PluginDiaryCommentUpdateTable.class.php</span></span>
<span class="line head"><span class="head">+++ </span><span class="filename">b/lib/model/doctrine/PluginDiaryCommentUpdateTable.class.php</span></span>
<span class="change"><span class="change">@@</span> -28,6 +28,7 <span class="change">@@</span></span> <span class="keyword">class</span> <span class="class">PluginDiaryCommentUpdateTable</span> <span class="keyword">extends</span> <span class="constant">Doctrine_Table</span>
}
<span class="local-variable">$object</span>->setMyLastCommentTime(<span class="predefined">date</span>(<span class="string"><span class="delimiter">'</span><span class="content">Y-m-d H:i:s</span><span class="delimiter">'</span></span>));
<span class="line insert"><span class="insert">+</span> <span class="local-variable">$object</span>->setLastCommentTime(<span class="predefined">date</span>(<span class="string"><span class="delimiter">'</span><span class="content">Y-m-d H:i:s</span><span class="delimiter">'</span></span>));</span>
<span class="local-variable">$object</span>->save();
<span class="local-variable">$this</span>->createQuery()->update()
</span></code></pre></p>
opOpenSocialPlugin - Bug(バグ) #1932 (Won't fix(対応せず)): applicationActions::executeInvitePost() 内のコ...
http://redmine.openpne.jp/issues/1932
2011-02-25T06:48:00Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>applicationActions::executeInvitePost() メソッド内の処理で、result と resultIds を混同している箇所があるため application/invitePost のレスポンスが正しい値になりません。</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>