-
-
Save doole/8651341 to your computer and use it in GitHub Desktop.
#!/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/ |
should I perhaps do all this from the usr/
directory instead of my Users/<username>
folder?
No, your problem is with php source file – it's saved as mirror
not as it should be as php-5.5.24.tar.bz2
. Therefore tar
command breaks and everything else after that. I'll update the script for Yosemite as soon as possible.
For the quick fix: download manually php-5.5.24.tar.bz2
into~/src
directory, comment lines 1-12, and run the script again.
I had to use this to get mine to work with a recent version of Postgres.app
./configure --with-pdo-pgsql="/Applications/Postgres.app/Contents/Versions/9.4/"
@pavelpigalev Nope, directory have been already changed at line 11
:
mkdir -p ~/src; cd ~/src
I've updated the script, so it should work better for the latest versions...
Thanks @larryweya for the correct Postgres.app path.
I fucking love you dude!! Save my life!!!
It should be (don't forget the -a) :
echo "extension=${EXT_DIR}pdo_pgsql.so" | sudo tee -a /private/etc/php.ini
echo "extension=${EXT_DIR}pgsql.so" | sudo tee -a /private/etc/php.ini
instead of :
sudo echo "extension=$EXT_DIRpdo_pgsql.so" >> /private/etc/php.ini
sudo echo "extension=$EXT_DIRpgsql.so" >> /private/etc/php.ini
because sudo echo "something" >> privilegedFile
throws a "Permission denied" error.
because echo "$EXT_DIRsomething"
evaluate the variable $EXT_DIRsomething, not $EXT_DIR.
And it should be (note the "~/src") :
# Go to extension dir and phpize
cd ~/src/php-$PHP_VER/ext/pdo_pgsql/
# Go to extension dir and phpize
cd ~/src/php-$PHP_VER/ext/pgsql/
Thanks and merci à Adrien :)
Very helpful!
I've updated the script. Thanks @adrien-desfourneaux 😄
Hi I have this problem
cc -I. -I/var/root/src/php-5.5.29/ext/pgsql -DPHP_ATOM_INC -I/var/root/src/php-5.5.29/ext/pgsql/include -I/var/root/src/php-5.5.29/ext/pgsql/main -I/var/root/src/php-5.5.29/ext/pgsql -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/Applications/Postgres.app/Contents/Versions/9.5/include -DHAVE_CONFIG_H -g -O2 -c /var/root/src/php-5.5.29/ext/pgsql/pgsql.c -fno-common -DPIC -o .libs/pgsql.o
/var/root/src/php-5.5.29/ext/pgsql/pgsql.c:35:10: fatal error: 'php.h' file not found
include "php.h"
^
1 error generated.
make: *** [pgsql.lo] Error 1
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, 9): image not found 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, 9): image not found in Unknown on line 0
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, 9): image not found 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, 9): image not found in Unknown on line 0
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, 9): image not found 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, 9): image not found in Unknown on line 0
Hi, at that time postgresql is in version 9.5 😉
PG_APP="/Applications/Postgres.app/Contents/Versions/9.5/"
If you start this script many times like me, you should remove content of /private/etc/php.ini
@dole, Thank you very much for your script
You saved my day, thanks for this amazing script!!
Just if anyone comes in the same situation, if you change the postgres version and you need to rebuild the extensions, you need to delete these two folders:
~/src/php-$PHP_VER/ext/pdo_pgsql/
~/src/php-$PHP_VER/ext/pgsql/
i experience this weird issue. can't find workaround. any ideas?
cc -I. -I/usr/local/src/php-5.5.30/ext/pgsql -DPHP_ATOM_INC -I/usr/local/src/php-5.5.30/ext/pgsql/include -I/usr/local/src/php-5.5.30/ext/pgsql/main -I/usr/local/src/php-5.5.30/ext/pgsql -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/Applications/Postgres.app/Contents/Versions/9.4/include -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/php-5.5.30/ext/pgsql/pgsql.c -fno-common -DPIC -o .libs/pgsql.o
/usr/local/src/php-5.5.30/ext/pgsql/pgsql.c:35:10: fatal error: 'php.h' file not found
include "php.h"
@pyrog, you're welcome 😉
@bertofer, you're welcome 😄
@xtsolucoes @ruckiand, you're missing php.h – do you have xcode command-line tools installed? try with xcode-select --install
Thank you so much for the script. Its def saved me a ton of time. Also, I was running into same missing php.h file not found error and then I ran xocde-select --install and re-run the script, and it all resolved. Thanks again!
Great work !!
Thanks
Thanks man! Already spent a day fixing it.
Amazing!!!
Saved my day! Thanks!
Updated for macOS Sierra 🍺
Dudeeeeeee you save my life :D
You saved me! I owe you a beer haha
Thank you!
Freaking amazing. This is the best thing since sliced bread. Thanks a billion
Very Helpful. Thanks you helpful to get the pgsql module installed.
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)
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.
Sorry, but I can't make this shell script work in Yosemite, brew installed Postgre 9.4.4 running. Here's my bash after sh:
I also tried to install manually, but could never 'make' due to errors. Please help?