Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

PEARでアルファ版をインストールするには

2008/05/15 | その他PEAR全般

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

通常PEARコマンドでPEARパッケージをインストールするときは以下のようにコマンドをうつ。

pear install HTML_QuickForm

上記でインストールできるのは安定版(stable)であって、インストールしたいパッケージのバージョンがまだベータ(beta)とかアルファ(alpha)だと「インストールに失敗しました」と表示されてインストールすることができない。では、どうするか。

pear install HTML_QuickForm2-alpha

パッケージ名の後ろにハイフンとbetaやalphaと指定すればよい。設定そもそもで「ベータでもアルファでも何でも来い」ともできるのだが、安定版でないものに関しては、その都度確認しつつインストールしたほうがいいだろう。

Net_POP3でメールの削除ができない

2008/05/06 | その他PEAR全般

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

Zend_Mailでのメール受信がうまくいかない(場合がある)。一つのライブラリ群に固執するつもりもないのでPEARを使うことにした。PEARでメールを受信するといえば「Net_POP3」が代表的(かな)。受信はこんな感じ。

$pop =& new Net_POP3;
$pop->connect($host);
$result = $pop->login($userId, $password);
if (PEAR::isError($result)) {
  exit(‘Error’);
}else{
  foreach($i=0;$i&lt$pop->numMsg();$i++;){
    $message=$pop->getMsg($i+1);
    //$messageはヘッダ・本文含めて全部
    //処理内容
  }
}

で、メールの削除は処理内容のところで以下のようにすればいいはずなのだが。
$pop->deleteMsg($i+1);

消えない。なぜ?。
答えは簡単。接続終了を明示的に実行していなかったからだ。接続の最後に以下の1行を追加して無事削除することができた。

$pop->disconnect();

トランザクションのcommitみたいなものかな。

XREAへのpearのインストール

2008/03/07 | その他PEAR全般

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

さてgo-pear.phpの取得はできたが、いざpearをインストールしようとすると・・・これがまたうまくいかない。サーバはXREAでPHP5の環境。実行したのは以下の通り。

 1. ウェブからアクセスできるところにディレクトリを作成し
 2. そのディレクトリのパーミッションを変更(777)
 3. 上記ディレクトリにgo-pear.phpを配置し、
 4. ブラウザからアクセス

ここまで昔どおりにやったつもりなのだが、うまくいかない。どうやら自動で作成されるディレクトリのパーミッションがよろしくないようだ。「困ったなぁ」と思って調べると、どうもXREAの場合はSSHでログインしてコマンドラインからインストールするとうまくいくようだ。懐かしい。

まずXREAでのSSHによるログイン。そのままではログインできなくて最初に一手間かける必要がある。
管理画面にログインして、左側のメニューからホスト情報登録をクリックする。ここで自分のIPアドレスを登録してからSSHターミナルソフトを使ってログインする必要がある。
ログインして、以下のようにコマンドを打った。

 cd public_html
 mkdir pear
 cd pear
 vi go-pear.php(スクリプトをコピペする)
 /usr/local/bin/php5 ./go-pear.php(pearのインストール)

あとは質問に答えるだけでpearがインストールされる。デフォルト以外のライブラリを追加インストールする場合は、pear/bin/pearコマンドを起動して、installとか引数を与えてインストールする(./pear install HTML_QuickForm2等)。

そう、今回はHTML_QuickForm2を使おうとしている。まだアルファ版だけれど・・・。昔作った非常に便利なシステムがあるのだがこれはPHP4で書かれている。将来性を考えてPHP5で、ということでちょっと冒険をしようとしているわけだ。QuickFormは強力なフォーム作成支援ツールだが好き嫌いははっきり別れるところだ(個人的には好きなほう)。まだまだQuickForm2に関する日本語の記述は少ないと思うので、メモもかねて書き連ねてみようと思う。

少し時間がかかりそうかな。
あとはフレームワークとの組み合わせ・・・何を使うか・・・。

go-pear.org消失

2008/03/06 | その他PEAR全般

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

ここのところ新しい技術に触れることもなく日々業務に追われていた関係でテクメモの更新はしていなかった。pearから離れて久しかったのだが、久々にpearを使うべくインストールを試みたのだが・・・。pearをインストールするためのスクリプトが置いてあるはずのURL「http://go-pear.org」が・・・ない。売りに出てた(期限切れのため)。「勘弁してくれよー」と思いつつ調べると以下のURLになっているようだった。

http://pear.php.net/go-pear

2007年10月かららしい。何ゆえアナウンスがないんだろ。せめてMLとかには情報が流れてもよさそうなものだが・・・。

mdb2でSQLいらず

2007/11/08 | その他PEAR全般

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

フレームワークやCMS、ブログツールを使ってシステム構築することがほとんどになってしまい、アレだけ大好きだったPEARを現在ではほとんど使っていない。今日、ふとPEARのマニュアルを見ていて便利なのを見つけた。
データベース接続のためのmdb2はSQLを書かなくてもSQLを実行できるのだ。もちろんDB_DataObjectなんかでも同様のことはできていたわけだが、これはもっとお手軽簡単だと思う。しかもプリペアードステートメントを使用するので値のエスケープも必要ない。こんな具合に記述するらしい。

事前に$mdb2というデータベースオブジェクトを作成しておいて・・・。
$tableName=’user';
$tableFields=array(‘id’,’name’,’password’);
$fieldTypes=array(‘integer’,’text’,’text’);
$mdb2->loadModule(‘Extended’);
$sth=$mdb2->extended->autoPrepare($tableName,$tableFields,$MDB2_AUTOQUERY_INSERT,null,$fieldTypes);

ここまでで準備完了。次にデータを用意して上記の$sthに放り込めばいい。
$values=array(1,’kaorun’,’himitsu’);
$result=& $sth->execute($values);

おのおのエラー処理は別途必要だが、SQLは書かなくていい。何より後々フィールド数が変わったりした場合でも変更が簡単だ。データ登録で複数行ついかしたかったらexecuteMultiple()を実行すればいい。
データを一行だけ登録するならautoExecute()を実行すればいい。こちらも同様に「SQLいらず」だ。

なにより、複雑な設定ファイルを記述しなくても「簡単な配列でテーブルを定義するだけでいい」ってのがサイコー。しかし・・・もっと昔に気づいていればなぁ。



Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524
守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524