Installer le support de postgresql sur PHP avec brew sur OSX Yosemite

support postgresql pour PHP sur OSX avec brew

J’utilise Postgresql pour certains projets et mon environnement de travail est OSX (Yosemite).

Pour activer le support de postgresql sur PHP avec brew, il faut réinstaller (recompiler) PHP avec la bonne option : –with-postgresql

Installer le suppport de postgresql pour PHP

 

$ brew reinstall php70 --with-postgresql

Idem avec une autre version de php :

$ brew unlink php70
[...]
$ brew link php56
[...]
$ brew reinstall php56 --with-postgresql

 

Installer le driver pdo

La suite de cet article concerne seulement une installation qui aurait le support postgresql mais pas le driver pdo mais en général, brew installe les deux.

Le driver pdo-pgsql est disponible en standard sur brew.

$ brew search pgsql
homebrew/php/php54-pdo-pgsql
homebrew/php/php55-pdo-pgsql
homebrew/php/php56-pdo-pgsql
homebrew/php/php70-pdo-pgsql

 

Installer le driver pdo-pgsql avec PHP7

Pour l’installer :

$ brew install php70-pdo-pgsql
==> Installing php70-pdo-pgsql from homebrew/php
==> Installing dependencies for homebrew/php/php70-pdo-pgsql: postgresql
==> Installing homebrew/php/php70-pdo-pgsql dependency: postgresql
==> Downloading https://homebrew.bintray.com/bottles/postgresql-9.5.1.yosemite.bottle.tar.gz
######################################################################## 100,0%
==> Pouring postgresql-9.5.1.yosemite.bottle.tar.gz
==> Caveats
If builds of PostgreSQL 9 are failing and you have version 8.x installed,
you may need to remove the previous version first. See:
 https://github.com/Homebrew/homebrew/issues/2510

To migrate existing data from a previous major version (pre-9.0) of PostgreSQL, see:
 http://www.postgresql.org/docs/9.5/static/upgrading.html

To migrate existing data from a previous minor version (9.0-9.4) of PosgresSQL, see:
 http://www.postgresql.org/docs/9.5/static/pgupgrade.html

 You will need your previous PostgreSQL installation from brew to perform `pg_upgrade`.
 Do not run `brew cleanup postgresql` until you have performed the migration.

To reload postgresql after an upgrade:
 launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
 launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don't want/need launchctl, you can just run:
 postgres -D /usr/local/var/postgres
==> Summary
🍺 /usr/local/Cellar/postgresql/9.5.1: 3,118 files, 35M
==> Installing homebrew/php/php70-pdo-pgsql
==> Downloading https://php.net/get/php-7.0.4.tar.bz2/from/this/mirror
==> Downloading from https://secure.php.net/distributions/php-7.0.4.tar.bz2
######################################################################## 100,0%
==> /usr/local/opt/php70/bin/phpize
==> ./configure --prefix=/usr/local/Cellar/php70-pdo-pgsql/7.0.4 --with-pdo-pgsql=/usr/local/Cellar/postgresql/9.5.1 --with-php-config=/usr/local/opt/php70/bin/php-config
==> make
==> Caveats
To finish installing pdo_pgsql for PHP 7.0:
 * /usr/local/etc/php/7.0/conf.d/ext-pdo_pgsql.ini was created,
 do not forget to remove it upon extension removal.
 * Validate installation via one of the following methods:
 *
 * Using PHP from a webserver:
 * - Restart your webserver.
 * - Write a PHP page that calls "phpinfo();"
 * - Load it in a browser and look for the info on the pdo_pgsql module.
 * - If you see it, you have been successful!
 *
 * Using PHP from the command line:
 * - Run `php -i "(command-line 'phpinfo()')"`
 * - Look for the info on the pdo_pgsql module.
 * - If you see it, you have been successful!
==> Summary
🍺 /usr/local/Cellar/php70-pdo-pgsql/7.0.4: 5 files, 88.6K, built in 51 seconds

Vérifier que le module est bien présent :

 

$ php -m | grep pgsql
pdo_pgsql

Activer le driver avec Apache

Pour l’activer avec Apache si vous utilisez php-fpm, il faut relancer php-fpm :

$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php70.plist
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php70.plist

Sinon avec brew services :

$ brew services restart php70
Stopping `php70`... (might take a while)
==> Successfully stopped `php70` (label: homebrew.mxcl.php70)
==> Successfully started `php70` (label: homebrew.mxcl.php70)

Vérifier la présence du driver avec phpinfo() :

 

osx-brew-php70-pdo-pgsql

 

Activer le driver avec plusieurs version de PHP

Si vous utilisez plusieurs versions de PHP en même temps, il va falloir installer le driver pour chaque version.
Par exemple, PHP7 est votre version active mais vous avez aussi php56. Il faut rendre active la version 56, et installer le driver puis rendre active PHP7 à nouveau.

$ brew unlink php70
Unlinking /usr/local/Cellar/php70/7.0.4... 18 symlinks removed
$ brew link php56
Linking /usr/local/Cellar/php56/5.6.19... 17 symlinks created
$ php -v
PHP 5.6.19 (cli) (built: Mar 10 2016 10:09:40)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
$ brew install php56-pdo-pgsql
==> Installing php56-pdo-pgsql from homebrew/php
==> Downloading https://php.net/get/php-5.6.19.tar.bz2/from/this/mirror
==> Downloading from https://secure.php.net/distributions/php-5.6.19.tar.bz2
######################################################################## 100,0%
==> /usr/local/opt/php56/bin/phpize
==> ./configure --prefix=/usr/local/Cellar/php56-pdo-pgsql/5.6.19 --with-pdo-pgsql=/usr/local/Cellar/postgresql/9.5.1 --with-php-config=/usr/local/opt/php56/bin/php-config
==> make
==> Caveats
To finish installing pdo_pgsql for PHP 5.6:
  * /usr/local/etc/php/5.6/conf.d/ext-pdo_pgsql.ini was created,
    do not forget to remove it upon extension removal.
  * Validate installation via one of the following methods:
  *
  * Using PHP from a webserver:
  * - Restart your webserver.
  * - Write a PHP page that calls "phpinfo();"
  * - Load it in a browser and look for the info on the pdo_pgsql module.
  * - If you see it, you have been successful!
  *
  * Using PHP from the command line:
  * - Run `php -i "(command-line 'phpinfo()')"`
  * - Look for the info on the pdo_pgsql module.
  * - If you see it, you have been successful!
==> Summary
🍺  /usr/local/Cellar/php56-pdo-pgsql/5.6.19: 5 files, 552.6K, built in 47 seconds
php -i | grep pgsql
Additional .ini files parsed => /usr/local/etc/php/5.6/conf.d/ext-pdo_pgsql.ini
PDO drivers => mysql, odbc, sqlite, pgsql
pdo_pgsql

Redémarrer php-fpm pour prendre en compte le nouveau driver :

$ brew services restart php56
Stopping `php56`... (might take a while)
==> Successfully stopped `php56` (label: homebrew.mxcl.php56)
==> Successfully started `php56` (label: homebrew.mxcl.php56)

Si vous voulez php7 par défaut, il faut le réactiver :

$ brew unlink php56
Unlinking /usr/local/Cellar/php56/5.6.19... 18 symlinks removed

$ brew link php70
Linking /usr/local/Cellar/php70/7.0.4... 17 symlinks created

$ php -v
PHP 7.0.4 (cli) (built: Mar 10 2016 10:26:32) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

OSX : connaitre la version en ligne de commande

Vous pouvez avoir besoin de connaitre la version courante pour les besoins d’un script ou tout simplement vouloir la connaitre rapidement en ligne de commande.

Un utilitaire sw_vers est livré en standard et vous affiche la version et le build courant :

$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.10.5
BuildVersion: 14F1605

Des paramètres existent pour obtenir directement l’information dont vous avez besoin :

$ sw_vers -productName
Mac OS X
$ sw_vers -productVersion
10.10.5
$ sw_vers -buildVersion
14F1605