Bueno, me uno a Gilberto en decirte que he usado desde hace tiempo CentOS 5 y 6 desde hace rato con PostgreSQL y no he tenido ningún problema hasta este instante.

Ahora:
1- Debes usar los repositorios más actualizados de PostgreSQL para CentOS. Si mal no recuerdo es yum.pgsql.org 2- Para guias muy buenas de CenTOS, Fedora y RHEL, puedes llegarte por acá: http://www.if-not-true-then-false.com

En este sitio está explicado como tener la última versión de PHP en CentOS 5 y 6. Para el manejo de archivos y todos los servicios en CentOS, puedes buscar el manual de Joel Barrios en http://www.alcancelibre.org, el cual explica muchos servicios entre ellos Apache 2.

Para que te actualize la última versión del libphp5-pgsql, usa el repositorio que te di más adelante.


On 06/14/2012 08:42 AM, Guillermo Villanueva wrote:
Buenos días amigos, veamos si pueden darme una manito.
Finalmente contraté un VPS de dattatec para levantar una aplicación de un cliente y me di con varios inconvenientes que se los comento. El sistema operativo que brindan es un centos 5 y yo venía acostumbrado al ubuntu server. Me está costando mucho acostumbrarme. El apache está configurado para el uso de múltiples dominios. No saben lo que me está costando encontrar archivos de configuración!! Había un postgres 8.1 instalado, pude instalar la versión 9.1.4 y está corriendo sin problemas.

El tema es que si ejecuto un phpinfo() en la parte de postgres muestra:
*pdo_pgsql*
PDO Driver for PostgreSQL enabled
PostgreSQL(libpq) Version 8.1.23
Module version 1.0.2
Revision $Id: pdo_pgsql.c 321634 2012-01-01 13:15:04Z felipe $

*pgsql*
PostgreSQL Support enabled
PostgreSQL(libpq) Version 8.1.23
Multibyte character support enabled
SSL support enabled
Active Persistent Links 0
Active Links 0

pgsql.allow_persistent On On
pgsql.auto_reset_persistent Off Off
pgsql.ignore_notice Off Off
pgsql.log_noticeOff Off
pgsql.max_links Unlimited Unlimited
pgsql.max_persistent Unlimited Unlimited

No debería mostrarme PostgreSQL(libpq) Version 9xx?. Funcionaban bien la mayoría de los accesos desde php a postgres hasta que probé la parte de bytea, hay un módulo que muestra una foto que tengo en un campo bytea y no está funcionando, no muestra nada, pero cuando corro exactamente lo mismo en mi server local , funciona perfectamente.

Otro problema que tengo con respecto al php y postgres es que no está registrando los errores de acceso a la base o no los estoy encontrando donde debe ser. Si tienen un tiempito les pido entonces: 1) Cómo hacer que php utilice las librerías correctas? (o son correctas las que está usando para un motor 9.1?)
1- Agrega el repo que te dice en el sitio http://www.if-not-true-then-false.com para PHP-5.3:

2- Actualiza la libreria:
     yum update php5-pgsql
2) Qué puede estar pasando que no muestra la foto? (adjunto el código php al final del mensaje)
¿Cómo estás enviando la imagen a la base de datos? ¿en bytea?
Esto debes valorarlo porque si almacenarás una gran cantidad de imágenes en la base de datos, esto puede hacer crecer bastante la base de datos, y a la hora del mantenimiento de la misma, se hace bastante trabajoso.

Yo trabajé en un sistema parecido con una gran cantidad de imágenes (pensado para más de 12 millones de imágenes), y lo que hicimos fue usar un sistema externo para el almacenamiento de las imágenes (usando VsFTPD, Nginx(como Load balancer y Servidor HTTP), ImageMagick y Python), y lo que almacenábamos en la base de datos era la dirección HTTP de la imagen.
3) Qué puede estar pasando que no hay log de errores de php al no poder acceder a la base? (ahora ya puedo , pero cuando lo estaba intentando, en ningún lado había un log de php y/o apache que muestre el problema)
Lo que puede estar pasando es que debes estar usando las librerías viejas de PHP (para 8.1) y lo que tienes es 9.1. Actualiza la versión y luego prueba de nuevo.

Otra cosita:
¿Por qué no usas un framework o algo por el estilo para PHP?
Symfony 1 o 2
CodeIgniter
Zend Framework, etc

Hay muchas buenas librerías que te permitirían desarrollar esa aplicación en muy poco tiempo, y te daría más flexibilidad, seguridad, gestión de roles, escalabilidad, etc.

Esto por supuesto, es a tu consideración.
Saludos

<?php
//Guillermo Villanueva
//Mod: 11/06/2012 19:00
session_start();
include_once("classconexion.php");
$conn = Db::getInstance();
$sql = "SELECT pos_foto FROM postulantes WHERE pos_email='$_SESSION[email]'";
$result = pg_query($conn, $sql);
if (!$result) {
    echo "Sin foto";
}

if (pg_num_rows($result)>0){
    header("Content-Type: image/jpeg");
    $imagen = pg_unescape_bytea(pg_fetch_result($result,0,0));
    echo("$imagen");
} else {
    echo "Sin foto";
}
pg_free_result($result);
?>

Desde ya muchas gracias por la ayuda que me puedan brindar.
Saludos.

Guillermo Villanueva





10mo. ANIVERSARIO DE LA CREACION DE LA UNIVERSIDAD DE LAS CIENCIAS 
INFORMATICAS...
CONECTADOS AL FUTURO, CONECTADOS A LA REVOLUCION

http://www.uci.cu
http://www.facebook.com/universidad.uci
http://www.flickr.com/photos/universidad_uci

Responder a