postgres pgsql para instalar php apache postgresql

php - pgsql - Error fatal: llamada a la función no definida pg_connect()



ubuntu apache php postgresql (13)

Estoy intentando conectarme a mi base de datos (servidor remoto) que tiene instalado PostgreSQL. Mi código PHP está intentando conectarme a la base de datos usando pg_connect (), pero aparece el error que dice: - "Error fatal: llamada a la función indefinida pg_connect () en /var/www/website/functions.php en la línea 82".

La línea 82 simplemente es:

$db = pg_connect($conn_string); where $conn_string = "host=".$hostname." port=5432 dbname=".$dbname." user=".$db_user." password=".$db_password.""

(todas las variables definidas anteriormente)

Revisé muchos foros y la única solución sugerida era ubicar el archivo php.ini que contiene una línea: - extension = pgsql.so (para UNIX) y extension = php_pgsql.dll (para Windows).

Se supone que esta afirmación debe comentarse y la solución es descomentarla. Lo he intentado pero aún no cambia la situación. El servidor remoto tiene una versión posterior a la instalación de PostgreSQL v9.0.4. Luego instalé PostgreSQL v8.4.8 en mi computadora portátil y ejecuté el sitio web localmente usando MAMP. Al principio, Apache se bloqueó por alguna razón extraña, solucioné ese problema, pero nuevamente terminé con el mismo error que antes, es decir, error fatal: llamada a la función indefinida pg_connect () ....

También ejecuté el phpinfo() y demostró que la versión php es compatible con el módulo PostgreSQL. He pasado un día entero buscando la solución pero no he tenido éxito. Este es mi primer proyecto para desarrollar un sitio web y estoy fuera de control. Cualquier tipo de ayuda será muy apreciada.

phpinfo () me da una gran lista de cosas en la terminal, pero las listas relevantes para PostgreSQL son las siguientes:

pdo_pgsql PDO Driver for PostgreSQL => enabled PostgreSQL(libpq) Version => 9.0.4 Module version => 1.0.2 Revision => $Id: pdo_pgsql.c 306939 2011-01-01 02:19:59Z felipe $ pgsql PostgreSQL Support => enabled PostgreSQL(libpq) Version => 9.0.4 Multibyte character support => enabled SSL support => enabled Active Persistent Links => 0 Active Links => 0 Directive => Local Value => Master Value pgsql.allow_persistent => On => On pgsql.auto_reset_persistent => Off => Off pgsql.ignore_notice => Off => Off pgsql.log_notice => Off => Off pgsql.max_links => Unlimited => Unlimited pgsql.max_persistent => Unlimited => Unlimited

Había reiniciado MAMP después de cada edición que hice desde que se mencionó en cada publicación que he leído hasta ahora. Creo que restablece tanto Apache como php.

''pqsql.so'' (que es el equivalente de UNIX de ''php_pqsql.dll'' en Windows) está presente en el directorio ''extensión''. También copié y pegué el archivo ''pqsql.so'' en el directorio de Apache / bin, pero no me proporcionó ningún cambio.

No estoy ejecutando php en la línea de comandos principalmente. Solo tenía curiosidad por ver qué phpinfo () me daría relevancia para pgsql que he mencionado en mi respuesta anterior.

Todavía estoy trabajando en las herramientas que ha mencionado y responderé tan pronto como obtenga algún resultado.

Gracias, H


  1. Agregue ''PHPIniDir'' C: / php "''en el archivo httpd.conf. (Siempre que tenga su PHP guardado en C :, o bien proporcione la ubicación donde se guarda PHP).
  2. Descomente siguiendo ''extension = php_pgsql.dll'' en el archivo php.ini
  3. Descomentar ''; extension_dir = "ext"'' en el directorio php.ini

En Gentoo, usa USE flag postgres en /etc/portage/make.conf y res emerge "emerge php"


En Windows OS, busque esto en php.ini "php_pgsql.dll" y elimine el ";" en la extensión, entonces eso es todo :) ¡Cheeers!


Error fatal: llamada a la función no definida pg_connect () ...

Tuve este error cuando estaba instalando Lampp o xampp en Archlinux,

La solución fue editar php.ini, está ubicado en /opt/lampp/etc/php.ini

luego encuentra esta línea y descomenta

extension = "pgsql.so"

luego reinicia el servidor apache con xampp y prueba ...

Buena suerte


Me encontré con este error y terminó relacionado con la forma en que se cargaba el archivo extension_dir de PHP.

Si al imprimir phpinfo () encuentra que bajo el encabezado PDO, los controladores PDO se configuran sin valor , es posible que desee comprobar que está cargando correctamente su directorio de extensión como se detalla en esta publicación:

https://.com/a/14786808/2578505


Necesita instalar el paquete php-pgsql o como se llame para su plataforma. Lo cual no creo que hayas dicho por cierto.

En Ubuntu y Debian:

sudo apt-get install php5-pgsql


Para aquellos de ustedes que tienen este problema con PHP 5.6, pueden usar el siguiente comando:

yum install php56w-pgsql

Para obtener una lista de más nombres de paquete para PHP 5.6, abra el siguiente enlace y desplácese hacia abajo a los paquetes:

PHP 5.6 en CentOS / RHEL 7.0 y 6.6 a través de Yum


También tuve este problema en OSX. La solución fue descomentar la extension = pgsql.so en php.ini.default y eliminar el sufijo .default , ya que el archivo php.ini no estaba allí.

Si está utilizando XAMPP, el archivo php.ini reside en / XAMPP / xampfiles / etc


Tienes que seguir estos pasos:

Abra el archivo de configuración php, que se encuentra en el siguiente directorio

C: / xampp / php / php.ini

Dentro de ese archivo, busque la sección de extensión y elimine las siguientes líneas

extension = php_pdo_pgsql.dll extension = php_pgsql.dll

y reinicia tu apache


Tuve el mismo síntoma en win7. Tengo este guion:

<?php phpinfo(); pg_connect("blah");

Cuando ejecuté el script phpinfo.php a través de apache ( http://localhost/phpinfo.php ), recibí el siguiente mensaje de error: Llamada a la función indefinida pg_connect () en ...

Cuando ejecuté el mismo script desde la línea de comando (php phpinfo.php), recibí el mensaje esperado: Advertencia de PHP: pg_connect (): no se pudo conectar al servidor de PostgreSQL: falta "=" después de "blah"

En ambos casos, se utilizó el php.ini esperado:

Loaded Configuration File C:/Program Files (x86)/php/php.ini

pero la sección pgsql faltaba por completo en phpinfo en el caso de la ejecución basada en apache y estaba presente en la ejecución basada en línea de comandos.

La solución fue que agregué la siguiente línea al apache httpd.conf:

LoadFile "C:/Program Files (x86)/php/libpq.dll"

Parece que, por alguna razón, este archivo no se carga automáticamente cuando apache ejecuta el script php, pero se carga si ejecuto el script php desde la línea de comandos.

Espero que ayude.


instala el paquete necesario. si usas yum:

yum search pgsql

luego mira el resultado y encuentra algo parecido a ''php-pgsql'' o algo por el estilo. copia el nombre y luego:

yum install *paste the name of the package here*


Editar . Me di cuenta de que estabas mencionando a MAMP. Mi consejo es para Windows, pero puede ser útil si sabes qué herramientas correspondientes usar.

Cosas para intentar :

  • ¿Ha reiniciado PHP y Apache desde su edición de php.ini?

  • ¿Se encuentra php_pgsql.dll en su directorio php / ext?

  • ¿Estás ejecutando php como un módulo? Si es así, intente copiar el archivo php_pgsql.dll en el directorio Apache / bin.

  • ¿Está ejecutando PHP desde la línea de comandos con un indicador que especifica un archivo php.ini diferente?

  • Podría intentar usar una herramienta como Filemon de Sysinternals para ver a qué archivos se está intentando acceder cuando se ejecuta PHP.

  • Podría intentar usar una herramienta como Dependency Walker para ver las dependencias de la DLL de postgreSQL, en caso de que tenga una dependencia faltante. La búsqueda rápida ldd para Unix.


Easy install for ubuntu: Just run, > sudo apt-get install php5-pgsql then > sudo service apache2 restart //restart apache

o

Uncomment the following in php.ini by removing the ";" ;extension=php_pgsql.dll then restart apache