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

IS は 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 安定版を新規インストールすると、すべてが緑色に点灯します (データベース接続、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 をロードするには 2 つの方法があります。1 つ目は、easyapache を使用して PDO php 拡張機能をインストールする方法です。2 つ目は、PECL を介して PDO をインストールする方法です。問題のモジュールが異なるようです。」

どうやら、このサーバーには通常の easyapache PDO の代わりに PECL が搭載されていたようです。彼がそれを削除し、easyapache PDO で再起動/リセットすると、すべてがうまく機能しました。

つまり、CakePHP には「通常の」PDO が必要なようです。

謎が解けました。


代わりに PECL を使用している場合は、次の回避策を使用できます。

  1. Datasource フォルダーにファイル "HpMysql.php" を作成し、次のコード/クラスを追加します: https://github.com/lorenzo/HipHop/blob/master/Model/Datasource/Database/HpMysql.php

  2. database.php の「データソース」を「HpMysql」に変更します

于 2012-07-17T14:42:27.580 に答える