<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>cloudrop &#187; PHP5.3</title>
	<atom:link href="http://cloudrop.jp/tag/php5-3/feed" rel="self" type="application/rss+xml" />
	<link>http://cloudrop.jp</link>
	<description>クラウド使ったインターネットサービスの技術支援、ウェブサービスの開発</description>
	<lastBuildDate>Thu, 09 Sep 2010 15:20:19 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://cloudrop.jp/tag/php5-3/feed" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>さくらのVPSにMongoDB+PHP+Apacheをインストールしたメモ</title>
		<link>http://cloudrop.jp/labs/install_memo_on_sakuravps?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=install_memo_on_sakuravps</link>
		<comments>http://cloudrop.jp/labs/install_memo_on_sakuravps#comments</comments>
		<pubDate>Thu, 19 Aug 2010 03:02:43 +0000</pubDate>
		<dc:creator>sekine</dc:creator>
				<category><![CDATA[実験・研究]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[PHP5.3]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[Twitter Streaming API]]></category>
		<category><![CDATA[さくらのVPS]]></category>

		<guid isPermaLink="false">http://cloudrop.jp/?p=493</guid>
		<description><![CDATA[Twitter Client Ranking by Streaming APIの構成は、
PHP5.3.3(with APC) + MongoDB1.6.1 + Apache2.2.3で、フレームワークにsyfmony1 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tr.labs.cloudrop.jp/">Twitter Client Ranking by Streaming API</a>の構成は、<br />
PHP5.3.3(with APC) + MongoDB1.6.1 + Apache2.2.3で、フレームワークにsyfmony1.4.6を利用しています。この構成が動く最低限の環境を構築した際のメモです。<br />
さくらのVPSはサービスはほとんど入っていませんでしたが、gccやautoconfは既に入っていました。</p>
<pre class="terminal">
<span style="color:#0F0;">#Apache</span>
sudo yum install httpd.x86_64

<span style="color:#0F0;">#PHPのコンパイルに必要（パラメータによる）</span>
sudo yum install httpd-devel.x86_64
sudo yum install libxml2-devel.x86_64
sudo yum install openssl-devel.x86_64
sudo yum install curl-devel.x86_64

<span style="color:#0F0;">#最新版PHP取得→コンパイル→インストール</span>
wget http://ve2.php.net/get/php-5.3.3.tar.gz/from/jp2.php.net/mirror
tar vfxz php-5.3.3.tar.gz
cd php-5.3.3
./configure \
--enable-mbstring \
--with-apxs2=/usr/sbin/apxs \
--with-curl \
--with-openssl \
--with-config-file-path=/etc  \
--enable-dom \
--with-libdir=lib64
meke
sudo make install

<span style="color:#0F0;">#symfonyのインストール</span>
sudo pear channel-discover pear.symfony-project.com
sudo pear install symfony/symfony

<span style="color:#0F0;">#PHP拡張のインストール</span>
sudo pecl install apc
sudo pecl install mongo

<span style="color:#0F0;">#PHP拡張の反映</span>
sudo vi /etc/php.ini

extension = mongo.so
extension = apc.so
apc.enabled=1
</pre>
<p>PHPも<a href="http://rpms.famillecollet.com/">Remi</a>のリポジトリを利用すると簡単に最新版がインストールできますが、cli版が<strong>バックグラウンドで実行できない不具合</strong>があるのでソース版を利用しました。</p>
<h4 id="toc-">参考</h4>
<ul>
<li><a href="http://memorandum.yamasnet.com/archives/Post-165.html">CentOS 5.2上でPHP 5.2.6にアップグレード</a></li>
<li><a href="http://a98.jugem.jp/?eid=371">CentOS 5.3 に php-5.2.9, mysql-5.1.35 をインストール(remi レポジットリより)</a></li>
</ul>
<h3 id="toc-mongodb">MongoDBをインストール</h3>
<p>下記URLを参考にMongoDBのリポジトリを設定してインストールします。<br />
参考：<a href="http://www.mongodb.org/display/DOCS/CentOS+and+Fedora+Packages">CentOS and Fedora Packages</a></p>
<pre class="terminal">
sudo vi /etc/yum.repos.d/10gen.repo 

[10gen]
name=10gen Repository
baseurl=http://downloads.mongodb.org/distros/centos/5.4/os/x86_64/
gpgcheck=0

sudo yum install mongo-stable* --enablerepo=10gen
</pre>
<p>最新のstableバージョン1.6.1がインストールされます（2010年8月19日現在）。デフォルトの設定は以下の通りです。<br />
設定ファイル：/etc/mongod.conf<br />
ログファイル：/var/log/mongo/mongod.log<br />
データディレクトリ：/var/lib/mongo/</p>
<p>起動は起動スクリプトでOK</p>
<pre class="terminal">
sudo /etc/init.d/mongod start
</pre>
]]></content:encoded>
			<wfw:commentRss>http://cloudrop.jp/labs/install_memo_on_sakuravps/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://cloudrop.jp/labs/install_memo_on_sakuravps" />
	</item>
		<item>
		<title>WordPressのコメントをOpenIDに対応した</title>
		<link>http://cloudrop.jp/wordpress/corresponded_to_openid?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=corresponded_to_openid</link>
		<comments>http://cloudrop.jp/wordpress/corresponded_to_openid#comments</comments>
		<pubDate>Mon, 07 Sep 2009 06:09:26 +0000</pubDate>
		<dc:creator>sekine</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP5.3]]></category>

		<guid isPermaLink="false">http://cloudrop.jp/?p=90</guid>
		<description><![CDATA[WordPressのコメントをOpenID対応にしました。
導入目的はコメント書き込みの敷居をいかに下げるかです。
目次


2系→3系の変更点
設定
カスタマイズ
PHP5.3.0でハマった


2系→3系の変更点
m [...]]]></description>
			<content:encoded><![CDATA[<p>WordPressのコメントをOpenID対応にしました。<br />
導入目的はコメント書き込みの敷居をいかに下げるかです。</p>
<p><strong>目次</strong>
<div class="toc">
<ol>
<li><a href="http://cloudrop.jp/wordpress/corresponded_to_openid#toc-23">2系→3系の変更点</a></li>
<li><a href="http://cloudrop.jp/wordpress/corresponded_to_openid#toc-">設定</a></li>
<li><a href="http://cloudrop.jp/wordpress/corresponded_to_openid#toc-1">カスタマイズ</a></li>
<li><a href="http://cloudrop.jp/wordpress/corresponded_to_openid#toc-php5-3-0">PHP5.3.0でハマった</a></li>
</ol>
</div>
<h3 id="toc-23">2系→3系の変更点</h3>
<p><a href="http://ms76.jp/2008/08/22/mixi_openid_for_wordpress/" target="_blank">mixi OpenIDをWordPressで利用する方法 </a>でも紹介しましたが、「WP-OpenID」プラグインが2系から3系に上がり、名称も「OpenID」プラグインになり、コメントフォームに含めるOpenIDのフィールド名が変わりました。</p>
<p>WP-OpenIDプラグイン 2系<br />
<code>&lt;input type="text" name="<strong>openid_url</strong>" id="openid_url" /&gt;</code></p>
<p>OpenIDプラグイン 3系<br />
<code>&lt;input type="text" name="<strong>openid_identifier</strong>" id="openid_identifier" /&gt;</code></p>
<h3 id="toc-">設定</h3>
<p>設定は、敷居を下げる目的なので、<br />
「Don&#8217;t require name and e-mail for comments left with verified OpenIDs」をチェックします。<br />
OpenIDプロバイダーになるつもりはないので「OpenID Provider Options」のチェックは全てはずしておきます。</p>
<h3 id="toc-1">カスタマイズ</h3>
<p>標準ではドーンとOpenID（URL）を入力するフォームを用意するだけの簡素なものなので、あらかじめ主要なOpenIDプロバイダーへのログインボタンを用意したものへとカスタマイズしました。</p>
<p><a href="http://cloudrop.jp/wp-content/uploads/2009/09/openid_comment.png"><img src="http://cloudrop.jp/wp-content/uploads/2009/09/openid_comment-300x170.png" alt="コメント欄キャプチャ" title="コメント欄キャプチャ" width="300" height="170" class="aligncenter size-medium wp-image-110" /><br />
</a></p>
<p>OpenID認証を利用した場合は、名前とメールアドレスの入力を省くことができる設定にしたので、既存のコメントフォームにOpenIDを入力するフォームだけ追加してもユーザビリティーが悪くなります。</p>
<p>対応策として、「通常のコメントフォーム」と「OpenID対応コメントフォーム」を用意して、デフォルトはOpenID対応、クリックによって通常とOpenID対応がtoggleする仕様にしました。</p>
<p>各(X)HTMLにclassとidを付けます。</p>
<ul>
<li>OpenID対応のコメントフォーム（form）にid=&#8221;openid_commentform&#8221;を設定</li>
<li>OpenID対応のコメント欄（textarea）にid=&#8221;openid_comment&#8221;を設定</li>
<li>各OpenIDプロバイダーの画像にclass=&#8221;openid_submit&#8221;、それぞれ個別にidを付ける</li>
<li>toggleのスイッチになるリンクにid=&#8221;comment_toggle&#8221;を設定</li>
</ul>
<p>javascript(jQuery)を追加します。</p>
<pre class="terminal">
jQuery(document).ready(function(){

    jQuery(&quot;.openid_submit&quot;).click(function(){
        if(jQuery('#openid_comment').val() == ''){
            alert('コメントを入力してください。');
            return false;
        }
        var openid_target= jQuery(this).attr('id');
        var openid_url = '';
        if(openid_target == 'mixi'){
                openid_url = 'https://mixi.jp/';
        }else if(openid_target == 'google'){
                openid_url = 'https://www.google.com/accounts/o8/id';
        }else if(openid_target == 'yahoo'){
                openid_url = 'http://yahoo.co.jp/';
        }else if(openid_target == 'livedoor'){
                openid_url = 'http://livedoor.com/';
        }else if(openid_target == 'hatena'){
                var hatena_id = window.prompt(&quot;はてなIDを入力して下さい。&quot;,&quot;&quot;);
                if(hatena_id == null) return false;
                openid_url = 'http://www.hatena.ne.jp/'+hatena_id+'/';
        }else if(openid_target == 'other'){
                var open_id = window.prompt(&quot;OpenID（URL）を入力して下さい。&quot;,&quot;&quot;);
                if(open_id == null) return false;
                openid_url = open_id;
        }

        if(openid_url == ''){
            alert('不正なOpenIDです。');
            return false;
        }

        jQuery('#openid_identifier').val(openid_url);
        return true;
    });
    jQuery(&quot;.openid_submit&quot;).mouseover(function(){
        jQuery(this).css('border-color','#e6db55 #dfcd2a #dfcd2a #e6db55');
    });
    jQuery(&quot;.openid_submit&quot;).mouseout(function(){
        jQuery(this).css('border-color','#CCCCCC #AAAAAA #AAAAAA #CCCCCC');
    });

    jQuery(&quot;#commentform&quot;).hide();
    jQuery(&quot;#comment_toggle&quot;).toggle(
            function(){
                jQuery(&quot;#openid_commentform&quot;).hide();
                jQuery(&quot;#commentform&quot;).show();
                jQuery('#comment_toggle').text(&quot;OpenID認証のコメント欄に切り換え&quot;);
            },
            function(){
                jQuery(&quot;#commentform&quot;).hide();
                jQuery(&quot;#openid_commentform&quot;).show();
                jQuery('#comment_toggle').text(&quot;通常のコメント欄に切り換え&quot;);
            }
    );
});
</pre>
<h3 id="toc-php5-3-0">PHP5.3.0でハマった</h3>
<p>このサーバーではWordPressをPHP5.3.0で動かしています。<br />
OpenIDプラグインは<a href="http://openidenabled.com/php-openid/" target="_blank">PHP OpenID Library</a>を内包していて、OpenIDにかかわる実装はこのライブラリに依存していますが、これが5.3.0に対応していないため、素のままでは動きません。</p>
<p>問題の解説と解決方法はこちらのブログが詳細ですので、ご覧ください。<br />
<a href="http://d.hatena.ne.jp/sotarok/20090826/1251312215" target="_blank"> PHP 5.3： 参照渡しの関数/メソッドを定義してた人は call_user_func_array に注意 &#8211; 肉とご飯と甘いもの @ sotarok</a></p>
<p>PHP OpenID Libraryのオフィシャルでも5.2.4までしかテストしてないよと言っているので仕方ないところです。<br />
修正箇所が3箇所なので、パッチを作成しました。パスを変えれば、PHP OpenID Libraryのパッチとしても動くはずです。<br />
<a href='http://cloudrop.jp/wp-content/uploads/2009/09/wordpress-openid-3.2.3-cloudrop-090907.patch.tar.gz'>wordpress-openid-3.2.3-cloudrop-090907.patch.tar.gz</a></p>
<p>それから、<a href="http://d.hatena.ne.jp/sotarok/" target="_blank">id:sotarok</a>さんが触れられている時とドキュメントが変わってましたので、触れておきます。</p>
<p><a href="http://www.php.net/manual/ja/migration53.incompatible.php" target="_blank">下位互換性のない変更点</a></p>
<p>旧ドキュメント</p>
<blockquote><p>引数を参照渡しする関数に値を渡した場合の振る舞いが変更されました。 以前は値渡しとして引数を受け取っていましたが、5.3.x からは warning が生成され、 全ての参照渡しのパラメーターが NULL となります。 </p></blockquote>
<p>現在のドキュメント</p>
<blockquote><p>
引数を参照渡しする関数に値を渡した場合の振る舞いが変更されました。 以前は値渡しとして引数を受け取っていましたが、今は fatal error が発生するようになりました。 参照渡しを期待している関数に定数やリテラルを渡していたコードは、 いったんその値を変数に代入してから関数に渡すよう書き換える必要があります。</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://cloudrop.jp/wordpress/corresponded_to_openid/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://cloudrop.jp/wordpress/corresponded_to_openid" />
	</item>
	</channel>
</rss>
