hypermkt blog

phpenvのphpにpdo_pgsqlをインストールする方法

January 28, 2017

背景

LaravelからPostgreSQLのデータベースに接続しようと思い、DB設定をした所下記エラーに遭遇した。

Illuminate\Database\QueryException with message 'could not find driver (SQL: select * from "hoges")'

調査した所、下記2点が分かった。

  • Laravelでは

PDO PostgreSQL 拡張モジュールを利用してPostgreSQLに接続する

  • phpenvでインストールしたPHP7.1.0にはpdo_pgsqlが無い

根本的には2番が原因なので、phpenvでPHPをインストール時にpdo_pgsqlを有効にしてインストールする方法をまとめます。

対象者

  • LaravelでPostgreSQLに接続したい人
  • phpenvでpdo_pgsqlを利用したい人

手順

特定のバージョンで有効にする

7.1.0で有効にする場合は ~/.phpenv/plugins/php-build/share/php-build/definitions/7.1.0 の冒頭部に configure_option -R “—with-pdo-pgsql”を追加するのみです。完成形は下記の通り。

configure_option -R "--with-pdo-pgsql"

install_package "https://secure.php.net/distributions/php-7.1.0.tar.bz2"
install_xdebug "2.5.0"
enable_builtin_opcache

全バージョンで有効にする

~/.phpenv/plugins/php-build/share/php-build/default_configure_options の好きなところに —with-pdo-pgsqlを追加するのみです。

上記の対応を実施後 phpenv install 7.1.0 でインストールしなおせば pdo_pgsql が有効なPHPがインストールされます。

終わりに

phpenvはextensionの設定も細かく調整できて便利でいいですね。


都内で働くWebアプリケーションエンジニア。主にサーバーサイド。最近はRuby/Railsでコードを書くのが楽しい。