Skip to content

Instantly share code, notes, and snippets.

@doole
Last active September 21, 2023 19:12
Show Gist options
  • Save doole/8651341 to your computer and use it in GitHub Desktop.
Save doole/8651341 to your computer and use it in GitHub Desktop.
Install PostgreSQL PHP extensions on Mac OS X
#!/bin/bash
# Install Xcode Command Line Tools first (required)
xcode-select --install
# Check PHP version `php --version`
PHP_VER=$(php -v | head -1 | awk '{ print $2 }')
# Extensions directory (default: empty string)
EXT_DIR=""
# Postgres.app < 9.3.5.0
#PG_APP="/Applications/Postgres.app/Contents/MacOS"
# Postgres.app >= 9.3.5.0 (check currently installed version first!)
PG_VER="9.5"
PG_APP="/Applications/Postgres.app/Contents/Versions/$PG_VER"
# El Capitan / Sierra workaround
if [ $(uname -r | head -c2) > 14 ]; then
EXT_DIR=/usr/local/lib/php/extensions/
mkdir -p $EXT_DIR
fi
# Check if extension exists first
php -m | grep pgsql
# Update brew and install requirements
brew update
brew install autoconf
# Download PHP source and extract
mkdir -p ~/src && cd ~/src
curl -O http://php.net/distributions/php-$PHP_VER.tar.bz2
tar -xjf php-$PHP_VER.tar.bz2
# Go to extension dir and phpize
cd ~/src/php-$PHP_VER/ext/pdo_pgsql/
phpize
# Configure for Postgress.app or just use `./configure` for the brew version
./configure --with-pdo-pgsql=$PG_APP
make
# El Capitan / Sierra workaround
if [ $(uname -r | head -c2) > 14 ]; then
cp ./modules/pdo_pgsql.so $EXT_DIR
else
sudo make install
fi
echo "extension=${EXT_DIR}pdo_pgsql.so" | sudo tee -a /private/etc/php.ini
# Go to extension dir and phpize
cd ~/src/php-$PHP_VER/ext/pgsql/
phpize
# Configure for Postgress.app or just use `./configure` for the brew version
./configure --with-pgsql=$PG_APP
make
# El Capitan / Sierra workaround
if [ $(uname -r | head -c2) > 14 ]; then
cp ./modules/pgsql.so $EXT_DIR
else
sudo make install
fi
echo "extension=${EXT_DIR}pgsql.so" | sudo tee -a /private/etc/php.ini
# Check if extension exists, again
php -m | grep pgsql
# Cleanup
rm -rf ~/src/php-$PHP_VER/
@doole
Copy link
Author

doole commented May 20, 2020

@mattjis since macOS High Sierra pgsql is included in the standard PHP instalation, so you don't need this workaround anymore.

If you take a look at your log, lines 2 and 3 show that you actually have pdo_pgsql and pgsql installed [from here]. Check yourself by typing php -m | grep pgsql or php --info | grep PostgreSQL in console.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment