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

Linux に、phpMyAdmin 2.6.4 をインストールする方法

phpMyAdmin とは、MySQL の管理がブラウザベースで行える PHP で書かれたフロントエンド UI である。これを使うと MySQL の管理が格段に楽になる。 画面イメージはこんな感じ。 phpMyAdmin.jpg まずは Apache と PHP のインストールをする。 Apache と PHP のインストールが済んだら phpMyAdmin をダウンロードする。 ダウンロードしたファイルを解凍したら、Apache の htdocs のディレクトリにまるごとコピーする (このディレクトリは HTML のルートになるため、https://yourdomain.com/phpMyAdmin/ でアクセスできるように、ディレクトリ名も変更しておこう)。
# cp -R ./phpMyAdmin-2.7.0-pl2 /usr/local/apache2/htdocs
# mv /usr/local/apache2/htdocs/phpMyAdmin-2.7.0-pl2 /usr/local/apache2/htdocs/phpMyAdmin
ここで、phpMyAdmin 用のデータベースを作成する (MySQL が 4.1.2 以上の場合は以下のスクリプトを走らせる)。
# mysql -u root -p < create_tables_mysql_4_1_2+.sql
次に、/usr/local/apache2/htdocs/phpMyAdmin/config.default.php を config.inc.php としてコピーする (ini ではなく、inc です)。
# cd /usr/local/apache2/htdocs/phpMyAdmin
# cp config.default.php config.inc.php
phpMyAdmin から MySQL にアクセスできるように、MySQL に config.inc.php の中のユーザー名とパスワードを設定する。
<?php

$cfg
['Servers'][$i]['user']          = 'root'; ←ここに MySQL がアクセスできるユーザー名を記述 (本当は root じゃない方がいい)
$cfg['Servers'][$i]['password']      = 'your_password'; ←上のユーザーに対するパスワードを記述

?>
ブラウザから phpMyAdmin にアクセスする。
phpMyAdmin とは、MySQL の管理がブラウザベースで行える PHP で書かれたフロントエンド UI である。これを使うと MySQL の管理が格段に楽になる。 画面イメージはこんな感じ。 phpMyAdmin.jpg まずは Apache と PHP のインストールをする。 Apache と PHP のインストールが済んだら phpMyAdmin をダウンロードする。 ダウンロードしたファイルを解凍したら、Apache の htdocs のディレクトリにまるごとコピーする (このディレクトリは HTML のルートになるため、https://yourdomain.com/phpMyAdmin/ でアクセスできるように、ディレクトリ名も変更しておこう)。
# cp -R ./phpMyAdmin-2.7.0-pl2 /usr/local/apache2/htdocs
# mv /usr/local/apache2/htdocs/phpMyAdmin-2.7.0-pl2 /usr/local/apache2/htdocs/phpMyAdmin
ここで、phpMyAdmin 用のデータベースを作成する (MySQL が 4.1.2 以上の場合は以下のスクリプトを走らせる)。
# mysql -u root -p < create_tables_mysql_4_1_2+.sql
次に、/usr/local/apache2/htdocs/phpMyAdmin/config.default.php を config.inc.php としてコピーする (ini ではなく、inc です)。
# cd /usr/local/apache2/htdocs/phpMyAdmin
# cp config.default.php config.inc.php
phpMyAdmin から MySQL にアクセスできるように、MySQL に config.inc.php の中のユーザー名とパスワードを設定する。
<?php

$cfg
['Servers'][$i]['user']          = 'root'; ←ここに MySQL がアクセスできるユーザー名を記述 (本当は root じゃない方がいい)
$cfg['Servers'][$i]['password']      = 'your_password'; ←上のユーザーに対するパスワードを記述

?>
ブラウザから phpMyAdmin にアクセスする。

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。

PHP で、サーバの設定を確認する方法

以下のスクリプトを作成する。表示結果はこのようになる
<?php
phpinfo
();
?>
以下のスクリプトを作成する。表示結果はこのようになる
<?php
phpinfo
();
?>

PHP で、連続カウント防止・カンマ区切り付きカウンタを作成する

PHP で、以下の仕様を満たすカウンタを作成してみる (このサイトで使っています)。
  1. 同一 IP からの連続したアクセスをカウントしない (連続カウント防止)。
  2. カウンタの数字をカンマ (,) で区切って表示する。
連続カウント防止機能は、
if(($ip_check == 1 && $ip != $_SERVER['REMOTE_ADDR']) ...
の部分でチェックしている。$ip には、「直前にアクセスしてきた IP アドレス」が入っている。同じ IP アドレスからアクセスし続ける限りはカウントされない。通常はこれでわりと正確なカウンタとなり得ると思うが、ファイアウォールの内側にいる同一マシンなどで、ファイアウォールのアドレスがアクセスのたびに変わる場合はこの限りではない。また、ケータイからのアクセスなどの場合も毎回アクセス元の IP アドレスがある一定の範囲内で変わるので連続カウント防止にはならないことに注意。 カウンタの数字をカンマ区切りにしているのは以下の 1行である。
$total = number_format($total);      // カンマ区切りにする
以下は PHP の全ソース。
<?php

// count.php
// (c) 2006 twinkle.cc
// <a />
//" title="https://perltips.twinkle.cc/
//">https://perltips.twinkle.cc/
//</a> updated by yas 2006/01/03
// updated by yas 2003/05/07
// updated by yas 2003/03/05
// オリジナル: <a />
//" title="https://works.xrea.jp/
//">https://works.xrea.jp/
//</a> ※このスクリプトと同じディレクトリに「count.dat」という名前のファイルを作成し、置いておくこと。

if(!$file) { $file='count.dat'; }

// 設定 ここから ────────────────────────────

$HOME = 'count.datがあるディレクトリのパス'; // ディレクトリ
$data = "$HOME/$file";               // カウント記録ファイル
$ip_check = 1;                       // 連続カウント防止(yes=1 no=0)

// 設定 ここまで ────────────────────────────

$count = file($data);                            // ファイルを配列に

// データ内の文字列を分解してそれぞれの変数に代入
list($total, $ip)=explode('<>', $count[0]);

// カウントアップ処理
if(($ip_check == 1 && $ip != $_SERVER['REMOTE_ADDR'])
||   
$ip_check == 0) {
   
$total++;
   
$new_data = implode('<>', array($total, $_SERVER['REMOTE_ADDR']));
   
$fp = fopen($data, 'w');         // 書きモードでオープン
   
flock($fp, LOCK_EX);             // ファイルロック
   
fputs($fp, $new_data);           // 書き込み
   
flock($fp, LOCK_UN);             // ロック解除
   
fclose($fp);                     // ファイルを閉じる
}
$total = number_format($total);      // カンマ区切りにする
print $total;                        // カウンタを表示
?>
このソースを自身の PHP のカウンタを表示したいページを同じディレクトリに置き、同じディレクトリに count.dat という名前のファイルを置く (私のところは「chmod 644 count.dat」で動いているがお使いの環境によってはパーミッションに注意)。 最後に、カウンタを表示したい場所に以下のように書けばよい。
<?php
include('count.php');
?>
PHP で、以下の仕様を満たすカウンタを作成してみる (このサイトで使っています)。
  1. 同一 IP からの連続したアクセスをカウントしない (連続カウント防止)。
  2. カウンタの数字をカンマ (,) で区切って表示する。
連続カウント防止機能は、
if(($ip_check == 1 && $ip != $_SERVER['REMOTE_ADDR']) ...
の部分でチェックしている。$ip には、「直前にアクセスしてきた IP アドレス」が入っている。同じ IP アドレスからアクセスし続ける限りはカウントされない。通常はこれでわりと正確なカウンタとなり得ると思うが、ファイアウォールの内側にいる同一マシンなどで、ファイアウォールのアドレスがアクセスのたびに変わる場合はこの限りではない。また、ケータイからのアクセスなどの場合も毎回アクセス元の IP アドレスがある一定の範囲内で変わるので連続カウント防止にはならないことに注意。 カウンタの数字をカンマ区切りにしているのは以下の 1行である。
$total = number_format($total);      // カンマ区切りにする
以下は PHP の全ソース。
<?php

// count.php
// (c) 2006 twinkle.cc
// <a />
//" title="https://perltips.twinkle.cc/
//">https://perltips.twinkle.cc/
//</a> updated by yas 2006/01/03
// updated by yas 2003/05/07
// updated by yas 2003/03/05
// オリジナル: <a />
//" title="https://works.xrea.jp/
//">https://works.xrea.jp/
//</a> ※このスクリプトと同じディレクトリに「count.dat」という名前のファイルを作成し、置いておくこと。

if(!$file) { $file='count.dat'; }

// 設定 ここから ────────────────────────────

$HOME = 'count.datがあるディレクトリのパス'; // ディレクトリ
$data = "$HOME/$file";               // カウント記録ファイル
$ip_check = 1;                       // 連続カウント防止(yes=1 no=0)

// 設定 ここまで ────────────────────────────

$count = file($data);                            // ファイルを配列に

// データ内の文字列を分解してそれぞれの変数に代入
list($total, $ip)=explode('<>', $count[0]);

// カウントアップ処理
if(($ip_check == 1 && $ip != $_SERVER['REMOTE_ADDR'])
||   
$ip_check == 0) {
   
$total++;
   
$new_data = implode('<>', array($total, $_SERVER['REMOTE_ADDR']));
   
$fp = fopen($data, 'w');         // 書きモードでオープン
   
flock($fp, LOCK_EX);             // ファイルロック
   
fputs($fp, $new_data);           // 書き込み
   
flock($fp, LOCK_UN);             // ロック解除
   
fclose($fp);                     // ファイルを閉じる
}
$total = number_format($total);      // カンマ区切りにする
print $total;                        // カウンタを表示
?>
このソースを自身の PHP のカウンタを表示したいページを同じディレクトリに置き、同じディレクトリに count.dat という名前のファイルを置く (私のところは「chmod 644 count.dat」で動いているがお使いの環境によってはパーミッションに注意)。 最後に、カウンタを表示したい場所に以下のように書けばよい。
<?php
include('count.php');
?>