$这个 - > Auth->登录()创建返回1行正确的查询,但无法IF检查(服务器的特定

2019-06-26 04:30发布

我们有我们要移动到新的服务器站点。 一切旧服务器上运行良好。 这是一个网站仅仅是一个开始,所以这是非常裸机。

当移动到我们的新服务器,试图登录不再起作用。 BUT -根据debugKit,由生成的查询$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

将返回1行 - 但如果这个块失败的:

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

PDO安装在两个(同一版本) - 不知道,如果该事项,但我们之前W /那已经有奇怪的问题。

当在执行全新安装CakePHP的2.2稳定,一切都亮绿灯(数据库连接,modrewrite ......等等等等)

我还以为有什么不对我们的数据或代码...等,但 - 这是同样的数据,同样的代码,而这由它返回1行的事实验证。

下面是我最近$components阵列中的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)
    )
);

更新:

根据我们的服务器的家伙,我们遇到的问题的服务器是PECL唯一一个龙头安装 - 当他删除它,登录工作。 (我们需要在服务器上为其他的事情上 - 为什么/什么原因,为了保持我们的登录无法工作)

Answer 1:

由原始的海报的答案(我):

根据我们的服务器的家伙,“有两种方法来加载PDO,首先是通过使用easyapache安装PDO PHP扩展。第二个是通过PECL安装PDO。看来,问题的模块是不同的。”

显然,在此服务器上它有PECL,而不是正常easyapache PDO的。 当他删除了,并重新启动/与easyapache PDO重置,一切伟大的工作。

所以 - 听起来像CakePHP所需的“正常” PDO。

谜团已揭开。


如果你有PECL相反,您可以使用此解决方法:

  1. 在您的数据源文件夹中创建一个文件“HpMysql.php”,并添加该代码/类: https://github.com/lorenzo/HipHop/blob/master/Model/Datasource/Database/HpMysql.php

  2. 你的database.php中“数据源”变更为“HpMysql”



文章来源: $this->Auth->login() creates correct query that returns 1 row, but fails IF check (server specific issue)