CentOSにmod_fcgidモジュールをインストール

ちょいとPHPをFastCGIで動かす必要があったので、VirtualBox内のテストサーバーに設定した。
次やる時に思い出せるようにメモ。
環境はCentOS5、PHP5.2.11。
インストールするのはmod_fcgid。
標準のyumレポジトリには、このモジュールが無いので、別途epelを設定してインストール。
(今回はepelの設定は割愛。)

# yum --enablerepo=epel install mod_fcgid

でインストール。
後はvhosts.confの設定したい箇所に

<Directory "/hoge/moge/poge/">
Options ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /usr/bin/php-cgi .php
</Directory>

を追加してから

# /etc/init.d/httpd restart

でApacheを再起動して、

<?php phpinfo();

と記述したPHPファイルアップし、「Server API」に「CGI/FastCGI」と表示されいればOK。

PHPでInternet Explorerのバージョンを判定する

既に多くのプログラマーさんがやっているとは思いますが、PHPでInternet Explorerのバージョンを判定するプログラムを考えてみました。

$ua = $_SERVER['HTTP_USER_AGENT'];
$uaBrowserInfo['browser'] = "";
$uaBrowserInfo['version'] = "";
if (preg_match("/Trident\/(\d{1,}\.(\d{1,})).*rv:(\d{1,}\.(\d{1,}))/", $ua, $regExpResults)) {
$uaBrowserInfo['browser'] = "IE";
$uaBrowserInfo['version'] = (float)$regExpResults[3];
} elseif (preg_match("/MSIE\s(\d{1,}\.\d{1,})/i", $ua, $regExpResults)) {
$uaBrowserInfo['browser'] = substr($regExpResults[0], 2, 2);
$uaBrowserInfo['version'] = (float)$regExpResults[1];
}

ざっくり解説。
まず、uaという変数にUser Agentの値を入れる。
uaBrowserInfoのbrowserとversionを空にする。
正規表現で、先ずはIE11の新しくなったUser Agentかどうかを判定する。
Tridentとrv:があればIEとして、uaBrowserInfoのbrowserにIEと入れ、versionにはregExpResultの4番目の値がrv:の後の値が入っているので、それをfloatに変換して入れる。
次の処理で、従来の「MSIE バージョン番号」が見つかったら、uaBrowserInfoのbrowserにregExpResultsの1番目の値からIEという文字列抜き出して入れる。
バージョンはregExpResultの2番目の値をfloatに変換して入れる。
色々なパターンを試してみたので、おそらくこれで問題はないかと思います。

【2014/8/1 14:37追記】
ちなみに、互換モードは考慮していません。