Fatal error: Call to undefined function pg_connect() in ...
El proceso debería ser bastante sencillo, pero la presencia de un bug en la versión 2.X de WAMP Server lo complica un poco (aunque os daremos la solución más adelante).
Partimos del supuesto de un servidor WAMP ya instalado, si no sabéis cómo hacerlo tenéis un tutorial aquí: http://alcasoft.blogspot.com.es/2011/12/instalacion-de-un-servidor-local-wamp.HTML
Una vez instalado, la activación de los módulos de Apache y extensiones de PHP es relativamente sencilla: hacemos clic en el icono de WAMP en la barra de tareas > PHP > Extensiones de PHP y activamos las siguientes:
- php_pdo_pgsql
- php_pgsql
Al reiniciar los servicios de WAMP debería funcionar, pero si tratamos de hacer uso de la función sigue apareciendo el error:
Si verificáis las extensiones habilitadas (con la función phpinfo() dentro de una página PHP), podréis comprobar que pgsql no se encuentra activo pese a haberlo activado en el interfaz gráfico de WAMP.
Esto se debe a un bug en WAMP. PostgreSQL hace uso de la librería libpq.dll encargada de ejecutar consultas SQL en Postgre. Esta librería debería estar en la carpeta bin de la instalación de Apache, pero se encuentra en la carpeta de PHP.
La solución es sencilla: copiar esa librería a la carpeta correcta:
- Origen: C:\wamp\bin\php\php5.3.10
- Destino: C:\wamp\bin\apache\Apache2.2.21\bin
Reiniciamos los servicios de WAMP y comprobamos de nuevo con phpinfo():
Ya aparece la extensión activa y podremos hacer uso de las funciones de PHP para PostgreSQL desde nuestro código.