#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