2006年05月19日
インストール出来ないPEARパッケージがあった時
また仕事ネタですみません。
言わずと知れた、PHPのライブラリ群PEAR。実はおれ今までDBクラスくらいしか使ってなかったんだけど、他に使ってみたいパッケージで未インストールのものがあったんです。ほんじゃ勉強もかねてインストールしてみるか、となったわけですが、、、ちょっとウマく行かなかったんです。ちなみに環境はMac OS10.4.6 / PHP4.4.1 / PEARのコアパッケージ(で合ってるのかな?)は1.3.6。
えっと、まずPEARパッケージのインストールはどうやるかというと、 CLIインストーラをshellから実行します。
# pear install パッケージ名↓
です。#ちなみにstableでないパッケージをインストールする場合は"-f"オプションを指定。
…これでスンナリ実行出来ると思ったわけですが、どうもうまく行ってません。こんな感じ:
# pear install Var_Dump
downloading Var_Dump-1.0.3.tgz ...
Starting to download Var_Dump-1.0.3.tgz (16,342 bytes)
......done: 16,342 bytes
No handlers for package.xml version 2.0
との事で、うまく行きません。証拠に現在インスコされてるパッケージを"pear list"調べてみてもありません。
色々ググってみたりPEARのマニュアル見たりして原因究明してみたんですが、わかりました。要するにPEARのバージョンが低くてうまく行かなかったみたいでした。以下、どのようにしてうまく行ったか書いておきます。
# pear upgrade pear
まずコアをアップグレードーー>NGでした。Archive_Tar >= 1.3.1が必要です、との事。
# pear upgrade Archive_Tar
upgrade ok: Archive_Tar 1.3.1とメッセージ。うまくいったらしい。
# pear upgrade-all
なんとなくこの方がいいかな?とおもい、全モジュールの更新をかけてみた。一部成功してないものがあるように見えるが、コアのバージョンは1.4.9に上がってました。
# pear install Var_Dump
うまくいったみたいだ。pear listコマンドで見てもちゃんとリストアップされてました。
よくよく実行結果を見るとwarningとか出てるみたいですが、とりあえず無視(w うまくバージョンが上がってないパッケージがあるみたいですが、、、まあつかってないからいいや♪みたいな(爆)
ちなみにこのVar_Dumpパッケージですが、デバッグする際によく使うvar_dumpをブラウザ環境でより見やすくするために開発されたもの(でいいんだよね?^^;)です。変数、値などに対応したcssのclassが指定されているので、自分で好き配色などをcssで定義可能。preフォーマット、table、xhtml、旧来のhtml4に対応。
http://pear.php.net/package/Var_Dump※英文っす。【追記】
- unix系のシステムにインストールするには書き込み権限のあるユーザである必要があるので、super userにならないと多分"permission denied."でコケると思います。
root権限でログインできないレンタル鯖なんかの場合は上記のインスコ方法は無理かもしれませんので、その場合はあしからず。(あ、でも地道にやればftpだけでも使えるようには出来るとおもうよ。それか鯖屋さんに頼むとかもアリ)
2005年07月04日
PHPコーディングメモ−その2
★requireやincludeやreadfileなんかで、動的に『$_SERVER['DOCUMENT_ROOT'] . サイトルートからのパス名』ってやりませんか?おれだけだったのかな。。つーかこーいう記述方法でクラスファイルやサイト共通のHTMLファイルなんかをincludeしてたんだけど、どうも誤動作が多くてダメで(しかも、2、3日前から突如エラーが多発し出した<もちテスト中のプログラムですよ汗)
結局、その部分は全部相対パス(../ とか ./とか)で書いたら安定して動くようになった模様。
教訓‥‥動的な部分はほどほどに。あまりラクしすぎちゃダメw って事ですな。あとこの先にSSL部分もあるので、多分絶対パスでやってるとそこでおかしくなっちゃう可能性もあったな。と今思えばこれが正解でした。
2005年06月23日
PHPコーディングメモ(その1)
★SESSIONを開始して一番最初に$_SESSIONに値を代入すると、意図していないのにURLの引き数にSESSION_IDが表示されちまう具合のわるい現象に遭遇しました。色々しらべた結果、.htaccess等のディレクティブ(php.iniなどでも可だと思うが、)にこいつを一行追加したら治りました。
php_flag session.use_trans_sid Off
もっと詳しく知りたい人はPHPのマニュアルを参照されたし。ちなみにini_set()関数はこのエントリには使用不可でした。
★拡張子をもたないファイルに対してMIME TYPEを設定するには(例えば..../query?q=hoge&...みたいに)やっぱしサーバの設定だったんですね。.htaccess等に下記を追加すると、PHPとしてパースしてくれやす。
ForceType application/x-httpd-php
htaccessについてはこちらがとても役に立ってます。