Last active
September 21, 2023 19:12
-
-
Save doole/8651341 to your computer and use it in GitHub Desktop.
Install PostgreSQL PHP extensions on Mac OS X
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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/ |
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
pdo_pgsql
pgsql
Already up-to-date.
Warning: autoconf 2.69 is already installed and up-to-date
To reinstall 2.69, run `brew reinstall autoconf`
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 177 100 177 0 0 264 0 --:--:-- --:--:-- --:--:-- 264
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.
/Users/mattijs/Downloads/8651341-0606545a4db1820cf127755505d0d35a186a6827/install_psql_php.sh: line 37: cd: /Users/mattijs/src/php-7.1.23/ext/pdo_pgsql/: No such file or directory
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module
/Users/mattijs/Downloads/8651341-0606545a4db1820cf127755505d0d35a186a6827/install_psql_php.sh: line 41: ./configure: No such file or directory
make: *** No targets specified and no makefile found. Stop.
cp: ./modules/pdo_pgsql.so: No such file or directory
Password:
extension=/usr/local/lib/php/extensions/pdo_pgsql.so
/Users/mattijs/Downloads/8651341-0606545a4db1820cf127755505d0d35a186a6827/install_psql_php.sh: line 53: cd: /Users/mattijs/src/php-7.1.23/ext/pgsql/: No such file or directory
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module
/Users/mattijs/Downloads/8651341-0606545a4db1820cf127755505d0d35a186a6827/install_psql_php.sh: line 57: ./configure: No such file or directory
make: *** No targets specified and no makefile found. Stop.
cp: ./modules/pgsql.so: No such file or directory
extension=/usr/local/lib/php/extensions/pgsql.so
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/pdo_pgsql.so' - dlopen(/usr/local/lib/php/extensions/pdo_pgsql.so, 0x0009): dlopen(): file not found: /usr/local/lib/php/extensions/pdo_pgsql.so in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/pgsql.so' - dlopen(/usr/local/lib/php/extensions/pgsql.so, 0x0009): dlopen(): file not found: /usr/local/lib/php/extensions/pgsql.so in Unknown on line 0
pdo_pgsql
pgsql
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Deleting expired sessions...9 completed.
[Process completed]
@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
Note that on OS/X the location of the php.ini for the Web application and for the php command line is different -
On OS/X Yosemite:
/usr/local/php5/lib/php.ini - php.ini for the Web app
/usr/local/etc/php/7.1/php.ini - php.ini for the php command line (if you are using php 7.1 YMMV)
If you are using Postgres you will need to specify the location of the pdo_pgsql extension like:
extension="/usr/local/php/extensions/pdo_pgsql.so" (again YMMV depending on your system)