2

我们有一个网站,我们正在移动到新服务器。在旧服务器上一切正常。这只是一个网站的开始,所以它非常简单。

移动到我们的新服务器时,尝试登录不再有效。但是 - 根据 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 安装在两者上(相同版本) - 不确定这是否重要,但在此之前我们遇到过奇怪的问题。

全新安装 CakePHP 2.2 stable 时,一切都亮起绿色(数据库连接、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 的服务器 - 当他删除它时,登录工作正常。(我们在服务器上需要它来处理其他事情 - 为什么/什么会导致我们的登录无法正常工作?)

4

1 回答 1

5

原始海报(我)的回答:

据我们的服务员说,“加载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 'datasource' 更改为 'HpMysql'

于 2012-07-17T14:42:27.580 回答