LoginSignup
4
5

More than 5 years have passed since last update.

PDO mySQL Driver Install

Last updated at Posted at 2014-02-22

Goal

* PHPを再インストールせずに、PDOのmySQLドライバを組み込む
* 拡張モジュールをソースからインストールする

Preparation

##
## 実行環境情報
##

$> uname -a
Linux *** 2.6.32-431.5.1.el6.x86_64 #1 SMP Wed Feb 12 00:41:43 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$> cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m
$> whoami
root

## mySQL installディレクトリ(64bit targz install)
$> ls /usr/local/mysql
## PHP installディレクトリ(source install)
$> ls /usr/local/php
## php.ini (/usr/local/php/bin/php -i | grep php.iniで確認可)
$> ls /usr/local/php/lib/php.ini

## 
## PHP version
## 
$> /usr/local/php/bin/php -v
  # PHP 5.3.28 (cli) (built: Feb 22 2014 20:40:54)
  # Copyright (c) 1997-2013 The PHP Group
  # Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies

Manual

Milestone
* pecl downloadコマンドでダウンロード
* mySQLをtarballからインストール、phpをソースからインストールしているので、そのパスを指定してビルドする
* php.iniにpdo_mysql.soを指定してapacheを再起動
* libmysqlclient.so.XXが見つからないエラーが出た場合は、共有ライブラリパスを登録して再実行

Download

cd /usr/local/src
  # /usr/local/src以下で作業する

/usr/local/php/bin/pecl download pdo_mysql
tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2

Build / Install

/usr/local/php/bin/phpize
./configure --with-pdo-mysql=/usr/local/mysql --with-php-config=/usr/local/php/bin/php-config
  # たぶんphpのパスが通ってないからか、php-configの場所を指定するよう警告が出るので、--with-php-configオプションをつける

make
make test
make install
  # Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

Include


vi /usr/local/php/lib/php.ini
  # Dynamic Extensionsブロックに以下のようにインストールしたpdo_mysql.soを追加
  # soのpathは、php -i | grep extension_dirを確認すると、
  # /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626以下を見てくれることを確認できる
  # 別のパスを指定したい場合はextension=のうしろをフルパスで指定することもできるっぽい

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
extension=pdo_mysql.so

Reload

## 
## gracefulで反映(gracefulでも反映された)
## 
/usr/local/apache/bin/apachectrl graceful

## 
## 反映を確認
## 
/usr/local/php/bin/php -i | grep pdo_mysql

ldconfig (以下のようなエラーでpdo_mysql読み込みが失敗する場合のみ実施)

エラー
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/pdo_mysql.so' - libmysqlclient.so.18: cannot open shared object file: No such file or directory in Unknown on line 0
ldconfig -p | grep mysql
  # libmysqlclient.so.18のパスが通ってないことを確認
  # libmysqlclient_r.so.16 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient_r.so.16
  # libmysqlclient.so.16 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.16

ls /etc/ld.so.conf.d/mysql-x86_64.conf
vi /etc/ld.so.conf.d/mysql-x86_64.conf
  # /usr/local/mysql/lib

ldconfig
  # キャッシュをクリアして更新

ldconfig -p | grep mysql
  # libmysqlclient.so.18のパスが通ったことを確認
  # libtcmalloc_minimal.so.0 (libc6,x86-64) => /usr/local/mysql/lib/libtcmalloc_minimal.so.0
  # libmysqlclient.so.18 (libc6,x86-64) => /usr/local/mysql/lib/libmysqlclient.so.18
  # libmysqlclient.so (libc6,x86-64) => /usr/local/mysql/lib/libmysqlclient.so

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5