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!」と表示されれば、動いています。

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');
?>