PHPとGDのバージョンに注意

2006/09/12 | SNS/CMS/ブログ

OpenPNEでちょっとした注意事項があることがわかった。それはなるべくインストールしてあるPHPを新しいバージョンにしておくことだ。これは単にPHPを新しいバージョンにすることが必要、というわけではなくてGDの機能に焦点があたる。
PHPの新しいバージョンではGDのモジュールが同梱され、それが使用される。GDは画像を扱うためのモジュールだが、ここで重要なのはGIFに対するサポートの程度だ。GIF画像はもともとそのフォーマット自体にライセンスがあって、画像の読み込みは可能だが、出力することはライセンスに違反するという問題があった。だから古いPHPだとGIF画像の出力ができない(正確には古いバージョンのライブラリの組み合わせではGIF画像の出力機能はサポートされない)。
OpenPNEには管理画面でもそうだし、一般ユーザ画面の日記等でもそうだが画像のアップロード機能がある。PHPでいう単純なアップロード処理自体はもちろんできるのだが、OpenPNEではアップロード時に画像を縮小するなどの編集処理がPHPによっておこなわれている。ここで画像がGIF形式だと読み込んで処理自体はできるものの出力ができないため、作成された画像が全て0KBという無残な結果になってしまう。
この画像を表示しようとするとIEなどでは×印になって、いわゆる「画像が表示されない」状態となる。

これには随分とはまってしまった・・・。

submitボタンクリック時の確認アラート

2006/09/07 | JavaScript/Ajax

PHPで作ったプログラムで導入先から「確認ボタンと取消ボタンを間違っておしてしまうからなんとかしてほしい」という依頼。本当は確認ボタンを押したいらしいが、間違って取消ボタンをおしてしまい、せっかく入力した内容が消えてしまうから、なんとかして、とのこと。
いっそのこと取消ボタンを削除してやろうかと思ったけど、それもあんまりなのでJavaScriptで取消確認のアラートを出すことにした。
別に何のことはない。取消ボタンに以下のJavaScriptを追加した。

onClick=”return confirm(‘取消OK?’);”

今は左側に取消ボタン、右側に確認ボタンを配置しているが、おそらくボタンの位置を変えても、担当者がかわれば同じような問題に取り付かれるような気がした。些細なことだけれど、これもユーザビリティ向上という観点から見れば、ある意味大切なことだと思った次第。

PEARのMDB2

2006/09/04 | その他PEAR全般

今日からまた新しい開発を始めることにした。
開発を始めるにあたりmojavi2.0をセットアップしていたが、今回からデータベース接続にはMDB2を使用することにした。いちおうDBは今後は追加開発せずメンテナンスのみということだったので、それに準じた。
セットアップがひととおり出来上がったところで簡単なモジュールを作って動作確認をしようとしたところエラーが発生。

MDB2 Error: not found

意味がわからない。何が「not found」なんだ?。そこで調べてみると、どうやらMDB2ではデータベースごとにそれぞれモジュールを別途インストールする必要があるとのことだった。つまり今回はMySQLを使っているので、MDB2以外にMDB2_Driver_mysqlというのをインストールしなくてはいけない。これを入れることによって正常に動作を確認できた。
DBが肥大化したのを教訓に、データベースごとのドライバを別インストールという形にしたのだろう。しかし現状ではエラーメッセージが意味不明なため、最初に使用するときは戸惑うだろう。
何はともあれ準備はできた。これから使い込んでいくとしよう。

SSL設定項目

2006/08/22 | apache

最近はサーバ設定とかから離れつつあり、設定方法を忘れつつあるのでメモ。
apache+mod_sslの設定箇所をメモしておく。


SSLCertificateKeyFile (サーバで作成した暗号化キーを指定)
SSLCertificateFile (証明書発行機関で署名してもらった証明書を指定)
SSLPassPhraseDialog exec:/etc/httpd/conf/sslpasswd.sh

通常の手順でSSLを導入すると、暗号化キー作成の際に使用したパスワードをapache起動のたびに聞かれることになる。これを回避するための設定が3行目。/etc/httpd/conf/sslpasswd.shに以下のように記述したファイルを設置し、実行権限を与えておくことでパスワードを自動で読み込んでくれるようになる。


#!/bin/sh
echo “(パスワード)”

最低限これだけ設定しておけばよい。あとはServerNameとか適宜設定する。

radioボタンの名前

2006/08/21 | HTML_QuickForm

QuickFormのradioボタンのname属性で、つまらない試行錯誤をしてしまった。
radioやcheckboxのようなフォームの要素を作成するときは以下のように、
$item=array();
$item[]=& HTML_QuickForm->createElement(‘radio’,’name1′);
$item[]=& HTML_QuickForm->createElement(‘radio’,’name2′);
$myForm->addGroup($item,’nameG’);
要素をそれぞれ作成して、addGroupするのがわかりやすい。
しかし上記のような名前属性をつけるとプログラム上はグループ化されているが、HTMLになったときに、それぞれのラジオボタンは連動して動作してくれない。HTMLのソースを見ればわかるが、2つのラジオボタンのname属性が異なる値になっているからだ。ラジオボタンが連動するためにはname属性に同じものが指定されていることが原則だ。こういうときは以下のように指定する。
$item=array();
$item[]=& HTML_QuickForm->createElement(‘radio’,NULL);
$item[]=& HTML_QuickForm->createElement(‘radio’,NULL);
$myForm->addGroup($item,’nameG’);
ラジオボタンの各項目で名前属性に相当する部分にNULLを指定すればよい。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net