Mac標準PHPからPostgres.app(brewではなく単独アプリの方)に接続しようとするとうんともすんともいわないので,調べてみるとExtensionがないとのこと。さらに,El CapitanではSIPの影響でMarvericks以前の方法が使えないとか。ということで,各種ページを調べてまとめると以下のようになりました。インストールできなくて切れかけている方は一度お試し下さい。
- El Capitan用にディレクトリ作成
$ mkdir -p /usr/local/lib/php/extensions/
- extensionの確認
$ php -m | grep pgsql
- brewのアップデート
$ brew update
※ここでYosemite以前にbrewをインストールしているとエラーになります
- ロールバック処理
$ cd /usr/local
$ git reset --hard && git clean -df
- /usr/localを書込可に変更
$ sudo chown -R $(whoami):admin /usr/local
- 再度アップデート
$ brew update
- Yosemiteからなくなったautoconfをインストール
$ brew install autoconf
- PHPのダウンロードと解凍
※OS X 10.11.5のPHPは5.5.34です
$ mkdir -p ~/php-src && cd ~/php-src
$ curl -O http://php.net/distributions/php-5.5.34.tar.bz2
$ tar -xjf php-5.5.34.tar.bz2
- extensionディレクトリでphpizeを実行
$ cd ~/php-src/php-5.5.34/ext/pdo_pgsql/
$ phpize
※ここでphp.hがないといったエラーになる場合
- PEAR and PECLのインストール
$ cd ~/php-src
$ curl -O http://pear.php.net/go-pear.phar
$ sudo php -d detect_unicode=0 go-pear.phar
- 以下の手順でディレクトリを変更します
1を選択
/usr/local/pearと入力
4を選択
/usr/local/binと入力
returnを押す
- インストール完了の確認
$ pear version
※PEARとPHP,Zendのバージョンが表示されます
- 再度phpizeの実行
$ cd ~/php-src/php-5.5.34/ext/pdo_pgsql/
$ phpize
- configureの実行
$ ./configure --with-pdo-pgsql=/Applications/Postgres.app/Contents/Versions/9.5
- pdo_pgsql.soの作成
$ make
※ここでre2cが古いとエラーが出た場合
- re2cのインストール
$ cd ~/php-src
$ curl -O http://jaist.dl.sourceforge.net/project/re2c/re2c/0.16/re2c-0.16.tar.gz
$ tar zxvf
$ cd re2c-0.16
$ ./configure
$ make
$ sudo make install
- configureの再実行
$ cd ~/php-src/php-5.5.34/ext/pdo_pgsql/
$ ./configure --with-pdo-pgsql=/Applications/Postgres.app/Contents/Versions/9.5
$ make
- El Capitan用にモジュールをコピー
$ cp ./modules/pdo_pgsql.so /usr/local/lib/php/extensions/
$ echo "extension=/usr/local/lib/php/extensions/pdo_pgsql.so" | sudo tee -a /private/etc/php.ini
- extensionディレクトリでphpizeを実行
$ cd ~/php-src/php-5.5.34/ext/pgsql/
$ phpize
- configureの実行
$ ./configure --with-pgsql=/Applications/Postgres.app/Contents/Versions/9.5
- pgsql.soの作成
$ make
- El Capitan用にモジュールをコピー
$ cp ./modules/pgsql.so /usr/local/lib/php/extensions/
$ echo "extension=/usr/local/lib/php/extensions/pgsql.so" | sudo tee -a /private/etc/php.ini
- インストール完了の確認
$ php -m | grep pgsql
※pgsqlとpdo_pgsqlが表示されます
- 作業フォルダの削除
$ rm -rf ~/php-src/