cakePHP1.3再入門#2 pear
前回までで、とりあえずトップページが表示されました。
このあとMVCにしたがってデータベースとその表示、更新などのページを作っていくわけですが、今回はちょっと横道にそれてPHPの便利な道具としてpearを導入することにしました。
恥ずかしい話ですが実はpearって何。それっておいしいの?状態でした。
携帯用のwebを作成するためにアクセスしてきた対象が携帯かPCかを振り分ける方法を探していてnet_userAgent_mobileというライブラリを見つけまして、どうもこれがpearというもののひとつであると言うことがわかりました。
pearはPHPの機能を拡張するライブラリということまでわかりました。ww
さて、ローカルのテスト環境にはXAMPPを導入した際にpearは入っているようです。
その環境でNet_userAgent_mobileのインストールに取り掛かります。
pearと言うコマンドでインストールできると言うことまでわかったのでコマンドプロンプトを開いて
C:\xampp/phpに移動します。(xamppのインストール方法によって変わります。)
このディレクトリにpearコマンドがありますので
pear install net_useragent_mobile
とタイプすればダウンロードとインストールを勝手にやってくれます。
これでテストできそうなので以下のようなテストphpを書いてみました。
mobiletest.php
<?php require_once('Net/UserAgent/Mobile.php'); $agent = Net_UserAgent_Mobile::singleton(); if($agent->isDoCoMo()){ echo "docomo" . "<br>"; echo $agent->getModel()."<br>"; echo $agent->getSerialNumber()."<br>"; }elseif($agent->isSoftbank()){ echo "Softbank"; }elseif($agent->isEZweb()){ echo "au"; }elseif($agent->isWillcom()){ echo "WILLCOM"; }else{ echo "PC"; } ?>
この状態でxamppのapacheを起動させてブラウザからhttp://localhost/mobiletest.phpを呼び出すと
「PC」と表示されました。無事動いているようです。次にiモード HTMLシュミレータ2を起動して同様のURLにアクセスすると
このように表示されました。ユーザーエージェントなどの判別もうまくいっているようです。
ただシリアル番号は取れていないようですが、この部分は後で要検討です。
auやsoftbankもシュミレータでテストするべきですが、とりあえず実機でテストしてみたいのでレンタルサーバーにuploadする方法を検討します。
今回はお名前ドットコムのSD共用サーバーを借りています。
説明を見るとpearはインストールされていないようなので手動でセットしないといけません。
いろいろ調べてみるとpear.phpとNet_UserAgent_Mobileの必要なファイルだけアップロードしても出来るようですが他の機能も必要になりそうなのですべてあげておくことにします。
ブラウザからインストールする方法としてgo-pear.phpと言うソースをアップロードしてインストールする方法がありましたので
テストしてみましたがどうもうまくいきません?
SD共用サーバーはSSHやTelnetが使えないのでFTPに頼るわけですが、アップロード先がドメインを複数含むので以下のようになっています。
analyze
backup
files
hoge.com
hogehoge.com
ブラウザからアクセスできるのはhoge.comとhogehoge.com以下ですのでpearはfiles以下のブラウザでアクセスできない領域におくことにします。
hoge.comの直下にgo-pear.phpをアップロードしてブラウザでhttp://hoge.com/go-pear.phpを叩くとインストール画面が出てきます。
(go-pear.phpはぐぐるとソースが入手できます。)
ここでInstallation prefixのところに何を入れるかで悩みました。
/home/アカウント名/pearなどと解説してるところもあるのですが、SD共用サーバーではどうすればよいか。
仕方ないのでpearをインストールする前に先ほどのmobiletest.phpをアップしてエラー吐かせて見ました。
すると
/export/sdxx/www/jp/r/e/gmoserver/n/m/サーバーアカウントID/hoge.com/mobiletest.php
にエラーがあるとでました。(一部伏字にしてますので、ご自分の環境で確認してください)
これで参照位置がわかりました。ただしgo-pearでインストールする際には/files/hoge/以下にしようと思うのでパーミッションを777にしておかないといけないようです。
面倒になってきたのでWindows環境でインストールしているディレクトリを/files/hoge/PEARにすべてアップロードしました。
さて、pearへのパスが通っていないので、このままでは先ほどのmobiletest.phpは動きません。
include_pathと言う奴を指定しなくちゃいけません。
.htaccessでパスを通す方法が書いてあったので設置して
php_value include_path “.:/export/sdxx/www/jp/r/e/gmoserver/m/n/サーバーアカウントID/files/hoge/PEAR”
としてみましたが、動きません。.htaccessでは動かないこともあるとのこと。サーバー側の仕様でしょうね。
仕方ないのでmobiletest.phpに一行加えました。
ini_set('include_path', ".://export/sdxx/www/jp/r/e/gmoserver/m/n/サーバーアカウントID/files/hoge/PEAR");
これをrequire_onceの前に加えたら、なんとか無事動作しました。
結構面倒でしたが、これでpear持つ変えるようになりました。
つぎは振り分けを行うためにcakePHPのルーティングについて、勉強しなおします。
これも結構ややこしやーーーー。