Linux 備忘録

Awstats 検索文字ばけ

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の再インストール

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・パスワード認証)

ここでは、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 と記述します。

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

phpにおいてFatal error (Allowed memory exhausted)発生

これは、phpの利用可能なメモリーサイズをオーバーしたことにより発生します。

以下のphp.iniのmemory_limit値を大きくすれば解決します。

(例)memory_limit = 16M

ここでは、リミットを8Mから16Mに変更しました。

Xoops を利用中に発生しましたが、Wordpressでも同様に発生します。php

のメモリー不足の問題ですから。

Squirrel Mail 本文の文字化け

 UTF-8のサーバーからでもeuc-jpのサーバーからでもシェルスクリプトでメールを送ると、本文が文字化けしてしまう。

原因は、Content-type , charset を読み込まないためのようだが、squirrel mail のサイトにあった以下の追記をmime.phpのtranslateText functionにしてみました。結果は、後で検証する予定。結局、これでは、文字化けは修正されなかった。後で、i18n.phpを修正してみる予定。
function translateText(&$body, $wrap_at, $charset, $charset_converted = false) {
global $where, $what; /* from searching */
global $color; /* color theme */
global $languages, $squirrelmail_language;

require_once(SM_PATH . ‘functions/url_parser.php’);

/* — 追加部分始まり —*/
if ( $squirrelmail_language == ‘ja_JP’ && $charset == ‘US-ASCII’ ){
$charset = $default_charset;
}
/* — 追加部分終わり —*/

シェルのtest コマンド 

シェルのtest コマンドの仕様を忘れがちなのでメモしておく。

if 文など条件式を評価する場合には test コマンドを使用する。どのような評価を行うかはオプションにより細かく指定することが可能である。 test コマンドは評価結果に従い、真(0)か偽(1)かの終了ステータスを返すのみで、画面上へのメッセージ出力等は一切行わない条件評価に特化したコマンドである。

[more…]

php safe モードでsquirrel mail の運用

Webmail squirrel Mail において、phpをsafe mode = on で運用すると、以下のようなエラーが発生して、使用できなくなります。

オープンエラー ../data/default_pref
デフォルトの設定ファイルが見付からないか読み込めません。
このエラーとともに管理者に連絡を取ってください。

php のセーフモードでは、安全のため、所有者の異なるファイルをアクセスできなくなるためにこのような現象となります。

これは、data ディレクトリーの所有者、所属グループがapache.apache 等になっていて、他のディレクトリーと異なる、所有者、所属グループになっているのが原因です。

これを解決するためには、squirrel mail のディレクトリーの所有者をdataディレクトリーの所有者apacheと同じに変更すれば良い。

従って、squirrel Mail のディレクトリー(ここでは /var/www/webmail ) 以下のようなコマンドで変更すれば、php safe-mode でsquirrel mail を使用できるようになります。

> chown -R apache.apache /var/www/webmail

簡単ですね。ネットで検索すると困っている人も居られるようで、参考になれば幸いです。
 

HTML コメント

以前HTML 2.0の場合、RFC 1866の”3.2.5. Comments”において次のように定義されていました:

To include comments in an HTML document, use a comment declaration. A comment declaration consists of ‘<!’followed by zero or more comments followed by ‘>’. Each comment starts with ‘- -’ and includes all text up to and including the next occurrence of ‘- -’. In a comment declaration, white space is allowed after each comment, but not before the first comment. The entire comment declaration is ignored.

つまり、

  • コメント宣言<! で始める
  • コメントは ”- -”で始まり、次に ”- -” が現れるまでの 全ての 文字がコメントとなる
  • コメントは0個以上、複数あっても、複数行にわたっても構わない
  • > で閉じる
  • コメントの後にはスペースを入れても良いが、最初のコメントの前(<!の直後)にはスペースを入れてはいけない

これが、HTML 4.0で以下のように変更されました。

HTML 4.0においては、コメントの定義は次のようになりました。

HTML comments have the following syntax:

<!-- this is a comment -->
<!-- and so is this one,
     which occupies more than one line -->

White space is not permitted between the markup declaration open delimiter(”<!”) and the comment open delimiter (”- -”), but is permitted between the comment close delimiter (”- -”) and the markup declaration close delimiter (”>”). A common error is to include a string of hyphens (”- - -”) within a comment. Authors should avoid putting two or more adjacent hyphens inside comments.

Information that appears between comments has no special meaning (e.g., character references are not interpreted as such).

HTML 4.0 Specification 3.2.4

要するに、コメントは<!- - this is a comment - ->のスタイルだけと覚えていたほうが良いでしょう。改行してもいいけど、その中に複数のハイフンを続けて記述しちゃだめ、ということです。HTML 2.0では許されていた「<!- - ここに - -  - - コメントあり - ->」というスタイルは、却下されています。最後の–と>の間にスペースは許されるけど、意味がない気がします。

MySQL、user の外部からの接続

★ 外部からのusername@hostname の接続

MySQLへアクセスするためのユーザー権限情報は、「mysql」というデータベースの「user」というテーブルで管理されている。

先ずは、全てにアクセス権のあるユーザーを作成してみましょう。

> grant all privileges on *.*  to username@’localhost’ identified by ‘Password’ with grant option;

これで、全権限のあるusername が作成される。

これは、自サーバーに繋ぐためのユーザーである。

任意の外部からこのユーザー名でMySQLに接続するためには、以下のユーザーを追加しなければなりません。

> grant all on privileges *.* to username@’%’ identified by ‘Password’ with grant option;

%は、任意のIPアドレスを表している。

これにより外部からもこのユーザー名で接続することができる。

● 特定のIPアドレスからのみ接続させたい場合

hostname には外部から接続するサーバーのIPアドレスの逆引きの値を入れる。

例 ’dxxx.xxx.ppp.asahi-net.or.jp’

これで、特定のIPアドレスから接続できるよになる。

何故逆引きIPアドレスなのかは分からない。エラーメッセージから、そのようにした。

外部からのドメイン名を入れれば良いのかもしれないが、未確認です。

メタ文字

シェルには、特殊な意味を持つ予約されている記号(メタ:meta文字)がある。

このメタ文字は、忘れがちなので、以下に列挙して置く。

“, $, @, &, ‘, (, ), ^, |, [, ], {, }, ;, *, ?, <, >, `, \,  スペース,改行、タブといったエスケープ・シーケンス

[more…]