Activer le support PostgreSQL en PHP sur Mac OS X

j'ai beaucoup de mal à obtenir la commande" pg_connect () " pour fonctionner correctement sur mon Mac. Je suis en train d'écrire un script PHP (à exécuter depuis la console) pour lire une base de données PostgreSQL et envoyer un rapport par email.

je suis entré dans mon fichier php.ini et j'ai ajouté

extension=pgsql.so

mais, j'ai rencontré l'erreur suivante.

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20090626 / php_pgsql.so' - dlopen (/usr/lib/php/extensions/no-debug-non-zts-20090626 / php_pgsql.so, 9): image not found in Unknown on line 0

Erreur fatale de PHP: appel à la fonction non définie pg_connect () in... (bla fichier ici)

en lançant phpinfo() , Je ne vois rien à propos de PostgreSQL, alors quel est mon problème ici?

29
demandé sur potashin 2011-07-05 23:59:23

10 réponses

la version PHP fournie avec OS X n'inclut pas PostgreSQL. Vous devrez compiler l'extension vous-même. Voici quelques instructions:

  1. Trouvez votre version de PHP: php -v .
  2. Téléchargez la version de PHP qui correspond à la vôtre: curl -O http://us.php.net/distributions/php-5.3.3.tar.gz . (Cet exemple télécharge PHP 5.3.3 mais cela doit correspondre à votre version)
  3. extraire l'archive que vous avez téléchargé: tar -xzvf php-5.3.3.tar.gz
  4. changement au répertoire d'extension de PostgreSQL: cd php-5.3.3/ext/pgsql/
  5. Type phpize .
  6. Type ./configure .
  7. Type make .
  8. Type sudo make install .
  9. ajouter l'extension à votre fichier php.ini en ajoutant extension=pgsql.so . (Vous avez peut être déjà fait)
  10. Redémarrez Apache.

Mise à jour pour OS X Mountain Lion Apple a supprimé autoconf des nouvelles versions de XCode donc la procédure ci-dessus échouera à #5. Pour résoudre ce problème:

  1. Type /usr/bin/ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)" .
  2. Type sudo chown -R $USER /usr/local/Cellar .
  3. Type brew update .
  4. Type brew install autoconf .

qui devrait installer autoconf et vous permettre d'installer le module à l'aide des instructions ci-dessus.

71
répondu Francois Deschenes 2013-07-03 22:36:00

si vous utilisez home brew , vous pouvez résoudre cela avec une commande aussi simple que:

brew install php55-pdo-pgsql

pour une autre version de php, rechercher avec:

brew search pgsql

36
répondu Daniel Cukier 2015-09-20 03:19:02

cela a fonctionné pour moi avec OSX 10.9.4 " Mavericks

Installer les sources

Téléchargez le code source PHP. Contrairement à Mountain Lion, vous n'avez pas de headers préinstallés pour créer un lien contre, donc vous devez le mettre dans /usr/include/php. Mavericks ships avec PHP 5.4.17, mais le dernier 5.4.source: php.net devrait faire:

tar -jxvf php-5.4.20.tar.bz2
sudo mkdir -p /usr/include
sudo mv php-5.4.20 /usr/include/php

configurer PHP

cd /usr/include/php
./configure --without-iconv
sudo cp /etc/php.ini.default /etc/php.ini

construction d'un module

j'avais besoin du module pdo_pgsql - le même modèle devrait s'appliquer à n'importe quel module si vous avez installé les dépendances nécessaires:

cd ext/pdo_pgsql

Dans mon cas, j'ai eu l'erreur suivante:

impossible de trouver autoconf. Veuillez vérifier votre installation d'autoconf et le Variable D'environnement $ PHP_AUTOCONF. Puis, exécutez à nouveau ce script. ERREUR: `la commande phpize "a échoué

donc j'ai dû utiliser cette commande:

brew install autoconf

puis:

phpize

Après que j'ai essayé de faire: ./ configurer

mais j'ai eu le problème suivant:

vérification de pg_config... non trouvé configure: error: impossible de trouver libpq-fe.H. Veuillez spécifier le chemin d'installation PostgreSQL correct

donc la solution était pour spécifier le chemin d'installation PostgreSQL correct:

./configure --with-pdo-pgsql=/Library/PostgreSQL/9.3/
make
sudo make install

qui copie pdo_pgsql.so to/usr/lib/php/extensions / no-debug-non-zts-20100525.

puis simplement ajouter

extension=pdo_pgsql.so to /etc/php.ini 

Exécuter php -m afin de confirmer que tout s'est passé comme prévu.

8
répondu Jorge Casariego 2014-08-07 20:26:35

pour ceux qui ont installé php7 / ngix /postgres à la main

vous pouvez installer le module PostgreSQL avec:

brew install php70-pdo-pgsql

après cela, vous devez redémarrer le service php:

brew services restart php70
7
répondu ricardo 2016-08-14 18:17:12
Les utilisateurs de

OS X El Capitan peuvent simplement mettre à jour leur version de PHP 5.6. C'est un paquebot qui le fera.

curl -s http://php-osx.liip.ch/install.sh / bash-s 5.6

3
répondu Christopher Charles Gorman 2016-02-01 14:05:27

Pour php56 par infusion:

brew install php56-pdo-pgsql
3
répondu ThangTD 2016-06-09 02:34:31

PostgreSQL par défaut est installé dans un endroit inhabituel sur MAC OS X:

/Library/PostgreSQL/9.3

vu l'emplacement ci-dessus, vous pouvez taper:

./configure --with-pgsql=/Library/PostgreSQL/9.3
2
répondu YP Leung 2014-03-14 14:46:22

j'ai tué toute la journée en essayant de le faire fonctionner sur El Capitan après avoir fait une mise à jour hier et il s'est avéré que j'ai oublié de modifier httpd.conf et de changer le chemin du module php par défaut (version 5.5.27) à celui que j'ai installé (version 5.6.14). Cela doit être fait dans httpd.conf en modifiant votre chemin par défaut LoadModule php5_module vers LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so . Juste décidé de le laisser ici comme la solution potentielle pour ceux qui mettent à jour leur OS ou juste la version PHP et faire face à la même problème.

2
répondu ievgenii 2015-10-11 20:53:38

pour ceux d'entre vous qui ont une erreur openssl tandis que make voici la solution

OSX utilise openssl 0.98 alors que l'installateur est à la recherche de 1.0.0

consultez ce lien pour plus d'instructions

psycopg2 d'erreur d'installation de la Bibliothèque - pas chargé: libssl.dylib

0
répondu Majky 2017-05-23 10:31:36

j'ai téléchargé PostgreSQL pour Mac, et j'ai utilisé le constructeur de pile après l'installation pour mettre en place l'ensemble de la pile D'entreprise Apache/PHP bout à bout. Je mentionne cette option comme une possibilité de gain de temps, probablement pas idéal pour toutes les situations. Devrait fonctionner correctement si l'apache et les postgres expédiés avec Mac OS X n'ont jamais été commencés.

pour maintenir la stabilité des applications hébergées apache existantes( pré-PostgreSQL install legacy), Je n'installerais que les nouvelles Entrepriseb apache sur le port 81 (stackbuilder demandera un nouveau port si l'instance Apache legacy est déjà en cours d'exécution). Ensuite, utilisez mod_proxy dans httpd.conf pour l'apache tournant sur le port 80 pour fournir une expérience utilisateur transparente aux applications hébergées sur PostgreSQL.

0
répondu Net Dawg 2015-11-12 22:08:37