cakephp authentication cakephp-2.2

cakephp - $ this-> Auth-> login() crea la consulta correcta que devuelve 1 fila, pero falla la comprobación IF(problema específico del servidor)



authentication cakephp-2.2 (1)

Tenemos un sitio que nos estamos moviendo a un nuevo servidor. Todo funcionó bien en el viejo servidor. Es solo el comienzo de un sitio, por lo que es bastante escueto.

Cuando se muda a nuestro nuevo servidor, intentar iniciar sesión ya no funciona. PERO - de acuerdo con debugKit, la consulta generada por $this->Auth->login() :

SELECT `User`.`id`, `User`.`name`, `User`.`email`, `User`.`username`, `User`.`password`, `User`.`role`, `User`.`created`, `User`.`modified` FROM `shopping_main`.`users` AS `User` WHERE `User`.`username` = ''another'' AND `User`.`password` = ''3813dd3a5eeb39c857d56f9ae58ec7f8237e5eb3'' LIMIT 1

SI devuelve 1 fila, pero esto si falla el bloque:

if ($this->Auth->login()) { $this->Session->setFlash(__(''You are now logged in.'')); } else { $this->Session->setFlash(__(''Invalid username or password, try again'')); }

PDO está instalado en ambas (misma versión), no estoy seguro si eso importa, pero hemos tenido problemas extraños antes de eso.

Al hacer una nueva instalación de CakePHP 2.2 estable, todo se ilumina en verde (conexión de base de datos, modrewrite ... etc etc.)

Hubiera pensado que había algo mal con nuestros datos, o código ... etc., pero - son los mismos datos, el mismo código, y eso se verifica por el hecho de que devuelve 1 fila.

A continuación se muestra mi matriz de $components más reciente en AppController:

public $components = array( ''DebugKit.Toolbar'', ''Session'', ''Cookie'', ''Auth'' => array( ''loginRedirect'' => array(''controller'' => ''dashboard'', ''action'' => ''index'', ''admin''=>true), ''logoutRedirect'' => array(''controller'' => ''users'', ''action'' => ''login'', ''admin''=>true) ) );

ACTUALIZAR:

Según nuestro tipo servidor, el servidor en el que estamos teniendo el problema es el único con PECL instalado: cuando lo eliminó, el inicio de sesión funcionó. (Lo necesitamos en el servidor para otras cosas: ¿por qué / qué causaría eso para evitar que nuestro inicio de sesión funcione?)


Respuesta de Original Poster (me):

Según nuestro tipo de servidor, "hay dos formas de cargar PDO. La primera es usar easyapache para instalar la extensión PDO php. La segunda es instalar PDO a través de PECL. Parece que los módulos en cuestión son diferentes".

Aparentemente, este servidor tenía PECL en lugar de la PDO easyapache normal. Cuando lo eliminó y lo reinició / reinició con el PDO easyapache, todo funcionó de maravilla.

Entonces, parece que CakePHP requiere el PDO "normal".

Misterio resuelto.

Si tiene PECL en su lugar, puede utilizar esta solución alternativa:

  1. Cree un archivo "HpMysql.php" en su carpeta Datasource y agregue este código / clase: https://github.com/lorenzo/HipHop/blob/master/Model/Datasource/Database/HpMysql.php

  2. Cambie su database.php ''datasource'' a ''HpMysql''