Help us understand the problem. What is going on with this article?

PDO mySQL Driver Install

More than 5 years have passed since last update.

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

metheglin
敷布団カバーと掛布団カバーを逆につけて寝ています
https://metheglin.jp/#logical
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした