Linux 備忘録

Archive for 1月, 2008

PHPのセッション

木曜日, 1月 31st, 2008

PHPのセッションサポート機能は、複数回のアクセスを通じて特定のデー タを保持する手段を実現するものです。これにより、よりカスタマイズさ れたアプリケーションを構築し、自分の Web サイトのアピール度を増加 させることが可能となります。

Webサイトの訪問者にはセッションIDと呼ばれるユニークなIDが割りつけられます。このIDは、ユーザー側にクッキーとして保存するか、または、URL に埋め込みます。

セッションサポート機能により、任意の数の変数をリクエスト間で受けわたせる ようになります。来訪者がサイトにアクセスした際、 PHP は特定のセッションIDがリクエストとともに送信されているかどうかを ( session.auto_startが1の場合は)自動的に、または (session_start() により明示的に、あるいは session_register() により暗黙に) 要求を受けて確認します。 このIDが送信されている場合には、以前保存された変数が再現されます。

session.auto_startをonとした場合、 オブジェクトをセッション変数に代入することができなくなります。 これは、セッションにおいてオブジェクトを再現するためには、 セッション開始前にクラス定義がロードされている必要があるためです。

全ての登録された変数は、リクエストが終了した後に、シリアル化されます。 未定義の登録変数は、未定義としてマーク付けされます。 後でユーザーがこれらの変数を定義しない限り、以降のアクセスにおいて セッションモジュールにより定義されません。

注意: セッション処理機能は、PHP 4.0 でサポートされました。

注意: セッションを処理している時、 session_register()関数を使用するか スーパーグローバル配列$_SESSIONへ新しいキーを 追加することにより変数が登録されるまで、セッションのレコードは作 成されないことに注意して下さい。これは、セッションが session_start()関数により開始されている場合で も真です。

MySQL tableにフィールド追加

木曜日, 1月 24th, 2008

一度作成したテーブル情報を更新するには、Alter table分を利用します。あまり使用する機会がないので、備忘録にメモっておきます。

データの変更だけでなく、フィールド単位の追加や削除をする場合にも Alter table を使用します。 Alter table には複数のオプションがあり、add, modify,change,drop,rename のうちのadd オプションについて説明します。

■ ADD オプション

MySQLで既存のテーブルに新しいフィールドを追加する場合は、ADDオプションを使用します。

> Alter table [テーブル名 ] add [ フォールド情報] [ [First] | [After フィールド名] ] ;

 最後のFirstやAfterで追加するフィールドの位置を指定します。たとえば、テーブルの最初のフィールドを追加する場合は[First]となり、途中に追加したい場合は[After フィールド名]というように指定したフィールド名の後に挿入することができます。

 フィールド情報の部分には、フィールド名やフィールドのデータ型などの情報を入力します。

例 name01 varchar(10) default ” ” not null

     num01 int(10) default ” ” not null など

■ DROP オプション

 既に存在しているフィールドを削除するオプションです。フォールドに挿入されているデータとともにすべて削除されます。

> Alter table [テーブル名] drop [フィールド名] ;

Drop をする際に確認はありませんので、間違って必要なフィールドを削除してしまわないように充分注意してください。

sed による置換

金曜日, 1月 18th, 2008

置換

sed -e ’s/original/replacement/g’ file

(more…)

USBのLinuxへの接続

水曜日, 1月 16th, 2008

kernel 2.6以上では、USB2.0をサポートしています。

(more…)

.html の拡張子でphp実行

金曜日, 1月 11th, 2008

phpは、通常.phpの拡張子に対してスクリプトを実行します。
それでは、何かと不都合なこともあるので、このサイトを参考にしてhttpd.conf を書き換えました。

AddType text/html .php
AddHandler php5-script .php
AddHandler php5-script .html

上記の内容を追加すると動作するようになりました。
これにより、どの程度apacheの負荷があがることになるのだろうか。

Awstats 検索文字ばけ

木曜日, 1月 10th, 2008

Awstatsの検索文字は、インストールしたままでは文字化けしてしまいます。

検索エンジン側の問題なのですが、このままでは、運営上問題があるので、対策として、ここのサイトにあるパッチを適用します。

先ず、パッチで必要とするJcode.pm をインストールします。

cpanからインストール

#perl -MCPAN -e shell

cpan> install Jcode

perlのバージョンが5.8.0以上ならばJcodeはEncodeのラッパーとなっているが、Awstatsの文字ばけ対応のパッチでJcode.pmを必要としているためJcode.pmをインストールします。

上記、参考サイトより、パッチをダウンロードして、解凍しパッチをあてます。Awstats 6-5 用のパッチであるため、その後のバージョンに対しては、手動でパッチ修正を行います。Awstats 6-6では特に問題なくパッチが動作しています。修正箇所は少ないので、手動でもさほど手間はかかりません。

後、日付のバグがあるので修正します。

【7769行目】
                #else { print “$Message[5] $MonthNumLib{$MonthRequired} $YearRequired”; }
                                ↓        ↓        ↓
                else { print “$YearRequired $Message[6]”.$MonthNumLib{$MonthRequired}; }
                print “</span>”;

【8916行目】
            #print ($MonthRequired eq ‘all’?”$Message[6] $YearRequired”:”$Message[5] “.$MonthNumLib{$MonthRequired}.” $YearRequired”);
                                ↓        ↓        ↓
            print ($MonthRequired eq ‘all’?”$YearRequired $Message[6]”:”$YearRequired $Message[6]”.$MonthNumLib{$MonthRequired});

以上でほぼ文字化け等の不具合は修正されます。 

Cactiの再インストール

水曜日, 1月 9th, 2008

cacti インストール時、パッチをしたときエラーが発生し、その後動作しなくなってしまいました。

そこで再インストールしたのですが、単純にインストールしただけでは、グラフは現れません。

Technical Support を見ると以下のエラーが発生しています。

RRDTool Version ERROR: Installed RRDTool version does not match configured version.
Please visit the Configuration Settings and select the correct RRDTool Utility Version.

それぞれのバージョンは以下の通り。 

RRDTool rrdtool-1.2.23-1.el5.rf

Cacti cacti-0.8.7a-1.el5.rf     OS: CentOS 5

 RRDToolは現在の最新バージョンなので、Cactiが最新バージョンに追いついていないのかもしれません。でも、RRDToolの最新版はかなり前に発行されているし、不思議です。cacti-0.8.7-1.el5.rfでは、動いていた気もするのだが・・・・。RRDToolのバージョン設定を1.2.xにしてもエラーは解消されません。 バージョンの違うパッケージをソースコードからインストールすれば動く気がしているが、面倒です。

Cactiのバージョンアップを待つしかないのだろうか?

参考

.htaccessによる(ID・パスワード認証)

土曜日, 1月 5th, 2008

ここでは、ID・パスワードによる照合を行ってコンテンツへのアクセスを会員制(メンバー制)にするユーザー認証の中のBasic認証を解説します。

設定したディレクトリー配下の全てのファイルがIDとパスワードによる照合を行う認証対象となります。

Basic認証は、.htaccess と .htpasswdの2つのファイルで構成されます。

.httaccess の記述例

AuthType Basic
AuthUserFile /home/hoge/public_html/etc/.htpasswd
AuthGroupFile /dev/null
AuthName “Enter ID & password”
Require valid-user

1行目のAuthType(認証タイプ)には、Basic認証とDigest認証がありますが、ブラウザが対応しているのは、Basic認証ですので AuthTypeディレクテブに続いて”Basic”と指定します。

2行目のAuthUserFileディレクティブは、認証のためのユーザーの名簿がある場所を示します。値には、フルパス(絶対パス)を指定します。このファイル名は、.htpasswdとなります。このファイルにIDとパスワードが記録されます。

3行目の AuthGroupFileディレクティブは、ユーザー認証のための、グループファイルを設定しています。グループファイルは、5行目のRequireディレクティブで Require group を宣言したときのみ必要になるものです。上記の例では、AuthGroupFileディレクティブには /dev/null の値を記述しているのでグループファイルは存在しないということを示しています。もし、グループ単位で制限する場合は、AuthUserFileディレクティブにグループファイルのある場所をフルパスで記述します。

4行目の AuthNameディレクティブは、ファイルへのアクセス時にダイアログボックスに表示する文字列を指定します。認証を促す注意書きにあたります。文字列にスペースを含む場合は、ダブルクォーテーション(”)で囲みます。日本語の指定も可能ですが、日本語は問題を起こすことが多いようなので、なるべく半角英数字だけを使って入力を案内できる英語を使うようにした方が良いでしょう。

5行目の Requireディレクティブは、ユーザー認証の際に、認証させるユーザを指定します。最初の値にパスワード認証の機会を与えるメンバーを指定します。 上記の例では、valid-user と記述しています。これは、 .htpasswd のファイルに記述されている全てのユーザーを許可することを示しています。つまり、IDとパスワードの照合が 正しければ、誰でもそのディレクトリへとアクセスすることが可能であることを示します。ユーザーの指定には他にグループ単位であれば、Requireディレクティブに続いて group と記述し、ユーザー単位であれば user と記述します。

パスワードは暗号化されて、格納します。