Foros del Web » Programando para Internet » PHP »

Dudas con PDO php y Linux

Estas en el tema de Dudas con PDO php y Linux en el foro de PHP en Foros del Web. Buenas! Primero que todo quiero aclarar que soy nuevo usando linux mint. Luego, tengo una duda y no claramente un problema. 1- Ayer instale apache2 ...
  #1 (permalink)  
Antiguo 04/12/2011, 15:30
Avatar de Vitesse92  
Fecha de Ingreso: diciembre-2009
Ubicación: Internet
Mensajes: 145
Antigüedad: 14 años, 4 meses
Puntos: 5
Dudas con PDO php y Linux

Buenas! Primero que todo quiero aclarar que soy nuevo usando linux mint.
Luego, tengo una duda y no claramente un problema.

1- Ayer instale apache2 y php5 con mysql y phpmyadmin.
Ya viene pdo-mysql activado por defecto. Siempre que quiero hacer algo nuevo en php busco la documentación y lei esto:
If your application does not catch the exception thrown from the PDO constructor, the default action taken by the zend engine is to terminate the script and display a back trace. This back trace will likely reveal the full database connection details, including the username and password. It is your responsibility to catch this exception, either explicitly (via a catch statement) or implicitly via set_exception_handler().
Entiendo que si no captamos la excepción php por defecto muestra la contraseña y usuario utilizado... osea que si mi server falla el usuario que intento entrar al sitio tendría mi usuario y contraseña de mysql... eso es grave,..
Entonces puse un usuario y contraseña incorrectos y la aplicación me da un error 500...
y luego coloco el usuario y contraseña real y todo de puta madre,
alguien sabe por que pasa esto? no lo entiendo realmente... no tendría que dar un error 500, o si?

2 - Esta clase llamada safepdo esta abajo en los comentarios, a su punto de vista esta correcta?:
Código PHP:
Class SafePDO extends PDO {
 
        public static function 
exception_handler($exception) {
            
// Output the exception details
            
die('Uncaught exception: '$exception->getMessage());
        }
 
        public function 
__construct($dsn$username=''$password=''$driver_options=array()) {

            
// Temporarily change the PHP exception handler while we . . .
            
set_exception_handler(array(__CLASS__'exception_handler'));

            
// . . . create a PDO object
            
parent::__construct($dsn$username$password$driver_options);

            
// Change the exception handler back to whatever it was before
            
restore_exception_handler();
        }


Y esas son mis dudas,
__________________
Imagenes de amor y Imagenes de amor . 1313
  #2 (permalink)  
Antiguo 05/12/2011, 10:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Dudas con PDO php y Linux

El comentario es correcto, que tu webserver te muestre un error 500 es cosa del WebServer, no de PHP.

Al enviar la excepción y no ser cachada se produce un fatal error, y se le informa al WebServer del error, el WebServer puede o no mostrar su pagina de error 500.
  #3 (permalink)  
Antiguo 05/12/2011, 21:53
Avatar de Vitesse92  
Fecha de Ingreso: diciembre-2009
Ubicación: Internet
Mensajes: 145
Antigüedad: 14 años, 4 meses
Puntos: 5
Respuesta: Dudas con PDO php y Linux

Código PHP:
class SafePDO extends PDO 
  
        public static function 
exception_handler($exception) { 
            
// Output the exception details 
            
die('Uncaught exception: '$exception->getMessage()); 
        } 
  
        public function 
__construct($dsn$username=''$password=''$driver_options=array()) { 

            
// Temporarily change the PHP exception handler while we . . . 
            
set_exception_handler(array(__CLASS__'exception_handler')); 

            
// . . . create a PDO object 
            
parent::__construct($dsn$username$password$driver_options); 

            
// Change the exception handler back to whatever it was before 
            
restore_exception_handler(); 
        } 

}  
$dbh = new SafePDO('mysql:host=localhost;dbname=test''asdf''password'); 
Gatos fijate que prove de esa manera y me da un error 500... que estoy haciendo mal :/
Si tengo activado modulo pdo, y bueno no se que mas comprobar :/ gracias por la ayuda
__________________
Imagenes de amor y Imagenes de amor . 1313

Etiquetas: linux, pdo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:15.