1. 環境構成
LAMP環境はすべてソースコードからインストール済みですが、PHPのインストール時にPDO_MySQLとMySQLiのオプションが設定されていませんでした。PDOについてはPHP 5にデフォルトで含まれています。
以下に各ディレクトリとファイルの配置を示します。
- PHPソースコードディレクトリ: /usr/local/src/php-5.2.10
- PHPインストールディレクトリ: /usr/local/php/
- PHPコンフィギュレーションツール: /usr/local/php/bin/php-config
- PHP設定ファイル: /usr/local/php/etc/php.ini
2. モジュールのコンパイルとインストール
以下の手順でPDO、PDO_MySQL、MySQLiの各モジュールをソースからインストールします。
[root@anpc ~] cd /usr/local/src/php-5.2.10/ext/pdo
[root@anpc pdo] /usr/local/php/bin/phpize
[root@anpc pdo] ./configure --with-php-config=/usr/local/php/bin/php-config
[root@anpc pdo] make
[root@anpc pdo] make test
[root@anpc pdo] make install
[root@anpc ~] cd /usr/local/src/php-5.2.10/ext/pdo_mysql
[root@anpc pdo_mysql] /usr/local/php/bin/phpize
[root@anpc pdo_mysql] ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
[root@anpc pdo_mysql] make
[root@anpc pdo_mysql] make test
[root@anpc pdo_mysql] make install
[root@anpc ~] cd /usr/local/src/php-5.2.10/ext/mysqli
[root@anpc mysqli] /usr/local/php/bin/phpize
[root@anpc mysqli] ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
[root@anpc mysqli] make
[root@anpc mysqli] make test
[root@anpc mysqli] make install
※ モジュールのパスが正しく設定されているか確認してください。誤ったパスではモジュールがロードされません。
また、/usr/local/php/bin/phpizeコマンドは対象の拡張機能ディレクトリ内で実行する必要があります。
インストール後、以下の3つの.soファイルが生成されます。
/usr/local/php/lib/php/extensions/no-debug-zts-20060613/pdo.so
/usr/local/php/lib/php/extensions/no-debug-zts-20060613/pdo_mysql.so
/usr/local/php/lib/php/extensions/no-debug-zts-20060613/mysqli.so
3. PHP設定ファイルの更新
php.iniファイルを編集し、以下の行を追加して拡張モジュールを有効化します。
vi /usr/local/php/etc/php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20060613/pdo.so
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20060613/pdo_mysql.so
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20060613/mysqli.so
設定変更後、サービスを再起動します。
service mysqld restart
service httpd restart
4. 環境の確認
4.1 PHPの情報表示
PHPの動作確認として、以下の内容でphpinfo.phpを作成します。
vi phpinfo.php
<?php
phpinfo();
?>
ブラウザでhttp://127.0.0.1/phpinfo.phpを開き、モジュールが正しくロードされているか確認してください。
※ phpinfo()関数が使えない場合、php.ini内の設定を変更します。
[root@anpc ~] vi /usr/local/php/etc/php.ini
disable_functions = phpinfo,passthru,…
phpinfoを削除し、保存後Apacheを再起動します。
[root@anpc ~] service httpd restart
4.2 MySQLi接続テスト
MySQLi経由でデータベース接続の確認を行います。
vi mysqlidb.php
<?php
$mysqli = new mysqli("localhost", "dbusername", "dbpassword", "dbname");
if (mysqli_connect_errno()) {
printf("接続失敗: %s\n", mysqli_connect_error());
exit();
}
printf("ホスト情報: %s\n", $mysqli->host_info);
$mysqli->close();
?>
ブラウザでhttp://127.0.0.1/mysqlidb.phpを開き、接続状況を確認します。