warning: Creating default object from empty value in /var/www/drupal-5.23/modules/taxonomy/taxonomy.module on line 1418.

Linux に、PHP 5.1.1 をインストールする

PHP は Apache と共に使う。まずは Apache をインストールする。 その後、以下の URL にアクセスして PHP をゲット。 コンソールから以下のコマンドを実行 (./configure 行は見やすいために折り返しているだけなので、実際にはすべて 1行に記述)。
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs
--enable-magic-quotes --with-xml --enable-mbregex
--enable-mbstring --enable-zend-multibyte
--with-mysql=/usr/local/mysql --enable-ftp --with-zlib
# make
# make install
# cp php.ini-dest /usr/local/lib/php.ini
ここで、/usr/local/lib にコピーした php.ini ファイル (/usr/local/lib/php.ini) を修正する。
output_buffering = On
output_handler = mb_output_handler
default_charset = Shift_JIS
session.save_path = /tmp/php

[mbstring] (以下、各行の先頭にある「;」を削除 (コメントアウト) する)
mbstring.language = Japanese 
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto 
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.script_encoding = auto
次に、/usr/local/apache2/conf/httpd.conf を編集して、Apache の設定を変更する。
# vi /usr/local/apache2/conf/httpd.conf
LoadModule php5_module        modules/libphp5.so ←この行の下に
AddType application/x-httpd-php .php ←この行を追加 (.php を Apache に認識させるため)
Apache を再起動する。
# /usr/local/apache2/bin/apachectl restart
PHPの動作確認をする。
# vi /usr/local/apache2/htdocs/phpinfo.php
<?php
phpinfo
();
?>
このように表示されれば OK。
PHP は Apache と共に使う。まずは Apache をインストールする。 その後、以下の URL にアクセスして PHP をゲット。 コンソールから以下のコマンドを実行 (./configure 行は見やすいために折り返しているだけなので、実際にはすべて 1行に記述)。
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs
--enable-magic-quotes --with-xml --enable-mbregex
--enable-mbstring --enable-zend-multibyte
--with-mysql=/usr/local/mysql --enable-ftp --with-zlib
# make
# make install
# cp php.ini-dest /usr/local/lib/php.ini
ここで、/usr/local/lib にコピーした php.ini ファイル (/usr/local/lib/php.ini) を修正する。
output_buffering = On
output_handler = mb_output_handler
default_charset = Shift_JIS
session.save_path = /tmp/php

[mbstring] (以下、各行の先頭にある「;」を削除 (コメントアウト) する)
mbstring.language = Japanese 
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto 
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.script_encoding = auto
次に、/usr/local/apache2/conf/httpd.conf を編集して、Apache の設定を変更する。
# vi /usr/local/apache2/conf/httpd.conf
LoadModule php5_module        modules/libphp5.so ←この行の下に
AddType application/x-httpd-php .php ←この行を追加 (.php を Apache に認識させるため)
Apache を再起動する。
# /usr/local/apache2/bin/apachectl restart
PHPの動作確認をする。
# vi /usr/local/apache2/htdocs/phpinfo.php
<?php
phpinfo
();
?>
このように表示されれば OK。

Linux に、Apache 2.2 をインストールする

まずは以下の URL にアクセスして Apache をゲット。 コンソールから以下のコマンドを実行。 # ./configure --enable-so --enable-module=so --enable-module=rewrite # make # make install インストール情報は以下の通り。 インストールディレクトリ: /usr/local/apache2 htdocs (HTML ドキュメントルート) のディレクトリ: /usr/local/htdocs httpd.conf 設定ファイルの場所: /usr/local/apache2/conf/httpd.conf これで、
# /usr/local/apache2/bin/apachectl start
または
# /usr/local/apache2/bin/apachectl stop
または
# /usr/local/apache2/bin/apachectl restart
などとしてあげればよろしい。 最後に、ブラウザからインストールしたマシンの IP アドレス (例えば、192.168.0.1 など) にアクセスして、「It works!」と表示されれば、動いています。
まずは以下の URL にアクセスして Apache をゲット。 コンソールから以下のコマンドを実行。 # ./configure --enable-so --enable-module=so --enable-module=rewrite # make # make install インストール情報は以下の通り。 インストールディレクトリ: /usr/local/apache2 htdocs (HTML ドキュメントルート) のディレクトリ: /usr/local/htdocs httpd.conf 設定ファイルの場所: /usr/local/apache2/conf/httpd.conf これで、
# /usr/local/apache2/bin/apachectl start
または
# /usr/local/apache2/bin/apachectl stop
または
# /usr/local/apache2/bin/apachectl restart
などとしてあげればよろしい。 最後に、ブラウザからインストールしたマシンの IP アドレス (例えば、192.168.0.1 など) にアクセスして、「It works!」と表示されれば、動いています。

Perl で、データベースを使う

Perl で、データベース (ここでは MySQL を使うときの基本) をおさらいしよう。Perl でのデータベースへのアクセスは、DBI モジュールを使う。このモジュールは XS で書かれているため、Linux などにインストールするには gcc のコンパイル環境が必要である。レンタルサーバは予め DBI がインストールされているところを選んでおけば間違いないが、そうでない場合は自力でインストールする必要があるため注意しよう。 さて、以下はデータベース中のテーブルのフィールドが id、name、value となっていてそれらを扱う場合の例である。最初のデータベースの定義のところで、mysql のところを Pg とするだけで PostgreSQL に対応できる (ようである)。 スクリプト中ではデータベースのテーブルを変数でマッピング (定義) している (ハッシュを使う方法もあると思うのでもっといい方法があったら教えて欲しい)。こうしておくと後でテーブルの定義を変更したときなど柔軟に対応できるだろう。 foreach の中の「$_」は、Perl では「現在処理中のデータ」であり、
foreach my $data (@$DATA) {
    $id    $data->$T_FIELD[$T_ID];
    $name  $data->$T_FIELD[$T_NAME];
    $value $data->$T_FIELD[$T_VALUE];
}
などするのと同義である。 DBI->selectrow_arrayref は、selectrow_array と似ているが、結果をリファレンスで複数行返すところが異なる。リファレンスなのでその後の処理も高速である (と思われる)。 使用するモジュール
use DBI;
#!/usr/bin/perl

use DBI;

# データベースの設定
our $DB_NAME     = 'DBI:mysql:your_database_name';
our $DB_USERNAME = 'your_username';
our $DB_PASSWORD = 'your_password';
our $DB_TABLE    = 'your_table_name';

# テーブルの定義
our $T_ID    = 0;
our $T_NAME  = 1;
our $T_VALUE = 2;

our @T_FIELD = (
    '`id`',
    '`name`',
    '`value`'
);

# データベースに接続
my $DB = DBI->connect($DB_NAME, $DB_USERNAME, $DB_PASSWORD)
       || die "Connection error";

# データを検索
my $DATA = $DB->selectall_arrayref(
                            qq|SELECT * FROM `$DB_TABLE` |
                          . qq|WHERE $T_FIELD[$T_ID]='ここに検索したい ID を書く'|
                        );

# データがあれば
if(@$DATA)    {

    my $id, $name;

    # データを出力
    foreach (@$DATA)    {

        $id    = $_->[$T_ID   ];    # $T_ID    = 0
        $name  = $_->[$T_NAME ];    # $T_NAME  = 1
        $value = $_->[$T_VALUE];    # $T_VALUE = 2

        print "$id / $name / $value\n";      # データを表示
    }
}

# データベースの接続を切断
$DB->disconnect();

1;
Perl で、データベース (ここでは MySQL を使うときの基本) をおさらいしよう。Perl でのデータベースへのアクセスは、DBI モジュールを使う。このモジュールは XS で書かれているため、Linux などにインストールするには gcc のコンパイル環境が必要である。レンタルサーバは予め DBI がインストールされているところを選んでおけば間違いないが、そうでない場合は自力でインストールする必要があるため注意しよう。 さて、以下はデータベース中のテーブルのフィールドが id、name、value となっていてそれらを扱う場合の例である。最初のデータベースの定義のところで、mysql のところを Pg とするだけで PostgreSQL に対応できる (ようである)。 スクリプト中ではデータベースのテーブルを変数でマッピング (定義) している (ハッシュを使う方法もあると思うのでもっといい方法があったら教えて欲しい)。こうしておくと後でテーブルの定義を変更したときなど柔軟に対応できるだろう。 foreach の中の「$_」は、Perl では「現在処理中のデータ」であり、
foreach my $data (@$DATA) {
    $id    $data->$T_FIELD[$T_ID];
    $name  $data->$T_FIELD[$T_NAME];
    $value $data->$T_FIELD[$T_VALUE];
}
などするのと同義である。 DBI->selectrow_arrayref は、selectrow_array と似ているが、結果をリファレンスで複数行返すところが異なる。リファレンスなのでその後の処理も高速である (と思われる)。 使用するモジュール
use DBI;
#!/usr/bin/perl

use DBI;

# データベースの設定
our $DB_NAME     = 'DBI:mysql:your_database_name';
our $DB_USERNAME = 'your_username';
our $DB_PASSWORD = 'your_password';
our $DB_TABLE    = 'your_table_name';

# テーブルの定義
our $T_ID    = 0;
our $T_NAME  = 1;
our $T_VALUE = 2;

our @T_FIELD = (
    '`id`',
    '`name`',
    '`value`'
);

# データベースに接続
my $DB = DBI->connect($DB_NAME, $DB_USERNAME, $DB_PASSWORD)
       || die "Connection error";

# データを検索
my $DATA = $DB->selectall_arrayref(
                            qq|SELECT * FROM `$DB_TABLE` |
                          . qq|WHERE $T_FIELD[$T_ID]='ここに検索したい ID を書く'|
                        );

# データがあれば
if(@$DATA)    {

    my $id, $name;

    # データを出力
    foreach (@$DATA)    {

        $id    = $_->[$T_ID   ];    # $T_ID    = 0
        $name  = $_->[$T_NAME ];    # $T_NAME  = 1
        $value = $_->[$T_VALUE];    # $T_VALUE = 2

        print "$id / $name / $value\n";      # データを表示
    }
}

# データベースの接続を切断
$DB->disconnect();

1;