Top / PECL / pdo / driver


 #setlinebreak(on)
 * PDOのドライバーインストール [#v4b69201]
 
 [[PECL::PDO(PHP Data Objects)がアツイ!!>PECL/pdo]]
 [[PECL::PDOのインストール>PECL/pdo/install]]
 [[PECL::PDOのドライバーインストール>PECL/pdo/driver]]
 
 #htmlinsert(googleAdsense.html)
 #ref(http://dozo.rgr.jp/img/img52_pecl.gif,right,nolink,around,PHP::PECL)
 
 
 
 PDOはそれ単体ではなにも動作しない。
 あくまでCommonクラスと行った具合のもの。
 利用するには各種データベースに対応したドライバーを別途インストールする必要がある。
 以下はドライバーの種類(2006/04/30現在)
  PDO_DBLIB 
   FreeTDS/Sybase/MSSQL driver for PDO
  PDO_FIREBIRD 
   Firebird/InterBase 6 driver for PDO
  PDO_INFORMIX 
   PDO driver for IBM Informix databases
  PDO_MYSQL 
   MySQL driver for PDO
  PDO_OCI 
   Oracle Call Interface driver for PDO
  PDO_ODBC 
   ODBC v3 Interface driver for PDO
  PDO_PGSQL 
   PostgreSQL driver for PDO
  PDO_SQLITE 
   SQLite v3 Interface driver for PDO
 
 MySQLを例にインストールをする。
 他のドライバーも使用方法は同じなので読み替えてみて欲しい。
 
 ** PHP5でのインストール(DSO) [#aeb7b9d0]
 PECLモジュールは基本的にインストール方法は同じ。
  # pecl install pdo_mysql
 あとはphp.iniに
  extension=pdo_mysql.so
 または、プログラムに
  dl( pdo_mysql.so );
 と記述する
 ただし、MySQLなどの各種パスが通っている場合のみ。
 
 ** PHP5のインストール(コンパイル) [#fc41d354]
 自身でコンパイルする場合もPDOと同じ。
 MySQLなどのインストールパスが通っていない場合は、
 インストールパスなどをconfigureオプションに追加する事も出来る。
 sharedオプションはつけてもつけなくてもDSOでインストールされる
  $ pecl download pdo_mysql
  $ tar xvfz PDO_MYSQL.x.x.x.tgz
  $ cd PDO_MYSQL.x.x.x
  $ phpize
  $ ./configure [--with-pdo-mysql=/usr/local/mysql]
  $ make
  # make install
 
 ** PHP5のインストール(静的、スタティック [#ice0ca29]
 これもPDOと同様。
  $ wget php-5.x.x.tar.gz
  $ tar xvfz php-5.x.x.tar.gz
  $ rm -Rf php-5.x.x/ext/pdo
  $ pecl download pdo_mysql
  $ tar xvfz PDO_MYSQL.x.x.x.tgz
  $ mv PDO.x.x.x php-5.x.x/ext/pdo_mysql
  $ cd php-5.x.x
  $ ./buildconf
  $ ./configure --with-pdo-mysql[=/usr/local/mysql] 〜〜〜
  $ make
  # make install
 
 ** PHP5.1のインストール(DSO) [#x4d09bc3]
 configureオプションにpdo-mysqlと言うのがあるので、
 sharedつきで有効にしておく
 
 
 リビルドしたくない場合は
 PHP5のインストールと同じように、
 pecl installでインストールする
 
 ** PHP5.1のインストール(静的、スタティック) [#f72b818f]
 configureオプションにpdo-mysqlと言うのがあるので、
 それを有効にしておく。
  $ wget php-5.x.x.tar.gz
  $ tar xvfz php-5.x.x.tar.gz
  $ cd php-5.x.x
  $ ./configure  --with-pdo-mysql[=/usr/local/mysql] 〜〜〜
  $ make
  # make install
 
 ** PHP5.1のインストール(DSO) [#n63fe0ff]
 configureオプションのpdo-mysqlにsharedオプションをつける
  $ wget php-5.x.x.tar.gz
  $ tar xvfz php-5.x.x.tar.gz
  $ cd php-5.x.x
  $ ./configure  --with-pdo-mysql=shared[,/usr/local/mysql] 〜〜〜
  $ make
  # make install
 
 ** ハマリどころ [#hf83ae8e]
 *** pecl installでインストールできない [#xd0d2929]
 実はpecl installではすんなり入ってくれない場合が多い。
 理由はmysqlのパスが通っていないからだ。
 その場合はコンパイルでインストールする
 *** コンパイルのconfigureでとまる [#q90cb2e9]
  $ ./configure --with-pdo-mysql=/usr/local/mysql
   ・・・
  checking for MySQL support for PDO... yes, shared
  checking for mysql_config... /usr/bin/mysql_config
  checking for mysql_query in -lmysqlclient... yes
  checking for mysql_commit... yes
  checking for mysql_stmt_prepare... yes
  checking for mysql_next_result... yes
  checking for mysql_sqlstate... yes
  checking for PDO includes... checking for PDO includes...
  /usr/lib/php5/include/php/ext
  configure: error:
   You've configured extension pdo_mysql, which depends on extension pdo,
   but you've either not enabled pdo, or have disabled it.
 
 どうもbuildオプションのバグなのか、
 どのモジュールでもPDO includesのチェックで止まる
 下記のファイルをhackしてもう一度やってみると良い
  /usr/local/lib/php/build/acinclude.m4 1024行目
  -- ここから --
   if test "x$is_it_shared" = "x" && test "x$3" != "xtrue"; then
     AC_MSG_ERROR([
  You've configured extension $1, which depends on extension $2,
  but you've either not enabled $2, or have disabled it.
  ])
   fi
  -- ここまで --
  を削除
 
 追記:
  PDO1.0.3で改善された模様
 
 
 *** 利用中にSegmentation fault [#o8b009a9]
 無事にインストールが完了して、
 試しにクエリを送信してみると問答無用で下記のメッセージが出るときがある
   Segmentation fault
 原因はわからないのだが、
 どうも関連している関数をDSOインストールしていると発生するっぽい。
 例えばPDO_MYSQLを使用して発生した場合、
 mysql関数をDSOでインストールしていると言った具合
  PDO_MYSQL => mysql
  PDO_PGSQL => pgsql
  PDO_OCI   => oci8
 と言った具合。
 とりあえず、全部静的インストールをしてみるとよい。
 
 追記:
  PDO1.0.3で改善された模様
 
 #htmlinsert(googleAdsense.html)
 
 [[PECL::PDO(PHP Data Objects)がアツイ!!>PECL/pdo]]
 [[PECL::PDOのインストール>PECL/pdo/install]]
 [[PECL::PDOのドライバーインストール>PECL/pdo/driver]]
 -めっちゃこのページの情報助かりました!ありがとうございますっ -- [[kimita]] &new{2006-12-01 03:26:13 (金)};
 -お役に立ててなによりです。 -- [[dozo]] &new{2006-12-01 09:43:49 (金)};
 
 #comment
 
 


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Third Project
証券会社ランキング比較