2010-05-14 2 views
8

J'ai été chargé de créer une application PHP qui accède à une base de données PostgreSQL existante. C'est la première fois que je travaille avec Postgre, sans compter que le PHP a déjà été installé dans la machine Linux sur laquelle l'application est supposée fonctionner. Je n'ai aucune expérience de mise en place de ce genre de choses, je code juste.pgsql.so n'est pas chargé dans PHP

Ma question est que je n'arrive pas à faire fonctionner l'extension Postgre en PHP. J'ai vérifié le fichier php.ini, il n'y avait pas de lignes "extension = ...". J'ai donc ajouté "extension = pgsql.so". J'ai alors vérifié le "extension_dir" et ai trouvé qu'il y avait seulement 2 dossiers dedans (ldap.so, phpcups.so), j'ai ajouté un dossier de pgsql.so pris d'une autre boîte de Linux. J'ai redémarré httpd. Et ça ne marche pas. Je n'ai pas trouvé de "pgsql" ou "postgre" dans phpinfo().

Pardonnez ma noobness. Je connais trop peu Linux. J'apprécierais vraiment si vous pouvez me diriger dans la bonne direction.


J'utilise la suggestion donnée par Number5:

Mec, je suis sur RedHat. J'ai utilisé le "yum" version de la commande que vous avez donné, et je suis arrivé ceci:

[root @ Perseus ~] # yum install php-pgsql Chargement "installonlyn" plug-in Configuration de procédure d'installation Mise en place des référentiels Impossible de récupérer mirrorlist erreur http://mirrorlist.centos.org/?release=5&arch=x86_64&repo=extras était [Errno 4] IOError: erreur: Impossible de trouver un baseurl valable pour repo: extras


MALHEUREUSEMENT, le serveur Linux j'utilise est pas connecté à Internet. Un autre moyen d'installer?

+1

qui ressemble à une question pour ServerFault. –

+0

espérons que vous avez déjà résolu votre problème. Si ce n'est pas le cas, vous pouvez télécharger les fichiers rpms et installer en utilisant la commande rpm. wget http://mirrors.gigenet.com/centos/5.4/os/x86_64/CentOS/php-pdo-5.1.6-23.2.el5_3.x86_64.rpm wget http://mirrors.gigenet.com/ centos/5,4/os/x86_64/CentOS/php-pgsql-5.1.6-23.2.el5_3.x86_64.rpm rpm -ivh * .rpm si cela vous indique que certains deps sont manquants, vous pouvez le trouver ici http : //mirrors.gigenet.com/centos/5.4/os/x86_64/CentOS/ le lien de téléchargement suppose que votre CentOS est 5.4 x86_64 – number5

+0

merci number5, super! – Obay

Répondre

9

Cela dépend de la distribution Linux que vous utilisez.

Si vous utilisez Ubuntu/Debian, vous devez:

sudo apt-get install php5-pgsql 

Fedora/CentOS

yum install php-pgsql 

vous pouvez généralement savoir que vous Distro êtes par:

ls /etc/*-release 
+0

Mec j'ai ajouté quelques commentaires ci-dessus – Obay

1
  • Supprime le fichier .so que vous avez copié de l'autre ordinateur e (bien que cela pourrait fonctionner, il n'y a pas besoin de prendre le risque)
  • Utilisez le gestionnaire de paquets de la distribution pour installer le module php_pgsql/php5_pqsql
  • Redémarrez l'apache et essayez à nouveau. Peut-être que le module a été ajouté à un fichier .ini automagiquement
  • Sinon, exécutez <?php echo 'ini: ', get_cfg_var('cfg_file_path'); pour voir que vous devez modifier php.ini
  • modifier ce fichier ini
  • restart apache
3

sur Les extensions CentOS créent un fichier * .ini séparé pour chaque extension php dans /etc/php.d

Donc, ne modifiez pas le fichier * .ini principal, mais créez /etc/php.d/pgsql.ini et y ajouter une ligne

extension=pgsql.so 

Ensuite, vous devrez redémarrer Apache à l'aide

service httpd restart 

Mais la meilleure façon automatisée est de taper simplement

yum install php-pgsql 

Dans votre cas qui n » ai pas t travail à cause de certains problèmes dans la configuration de yum. Aller à /etc/yum-repos.d type

nano /etc/yum.repos.d/CentOS-Base.repo 

Faites défiler jusqu'à la section [extras] et vous assurer qu'il est comme ceci:

#additional packages that may be useful 
[extras] 
priority=1 
name=CentOS-$releasever - Extras 
=extras 
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ 
gpgcheck=1 
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 

corriger si nécessaire, enregistrez le fichier (Ctrl- X) et procédez comme suit:

yum clean all 
yum upgrade 

essayer ensuite de répéter

yum install php-pgsql 
+0

il est dit: Erreur de configuration: Le fichier contient des erreurs d'analyse: fichier: /////etc/yum.repos.d/CentOS-Base.repo [ligne 41]: '= extras \ n ' – Obay

+0

Qui a dit? Quelle est votre version de CentOS? Peut-être, vous devez supprimer la chaîne "priorité"? –

-1

Mon système d'exploitation Linux kde à la menthe et il y avait même problème

pg_connect()

Vous devez installer si vous êtes php5.6 utiliser

sudo apt-get install php5.6-pgsql 

Une fois que vous devez changer le nom extention dans « php.ini » fichier.

;extension=php_pgsql.dll 

'dll' à 'si'

Par exemple

extension=php_pgsql.so 
+1

Cela semble être un problème différent. Pour commencer, l'OP avait déjà cette ligne de configuration exactement comme écrite. –

Questions connexes