1

この問題は非常に紛らわしく、私のような初心者にとって理解するのは非常に異なるため、ここでいくつかのガイダンスが本当に必要です.

最新の CI バージョンで WAMP サーバーを実行しています。

core/MY_Controller.php には次のものがあります。

public GeneralController extend CI_Controller {
    public GeneralController() {
        parent::__construct();
        // Does some stuff
    }
}

public AuthenticatedController extend GeneralController {
    public AuthenticatedController() {
        parent::__construct();
        if(!loggedIn()) redirect("/login");
        // Does some stuff
    }
}

public UnauthenticatedController extend GeneralController {
    public UnauthenticatedController() {
        parent::__construct();
        if(loggedIn()) redirect("/home");
        // Does some stuff
    }
}

私のログインコントローラーは次のとおりです。

class Login extends UnauthenticatedController {

したがって、基本的に、ログインして「/login」をロードすると、「/home」にルーティングされます。

これは私のローカル環境で完全に機能します。

サーバーにアップロードして「/login」に移動すると、無限ループが発生します。デバッグ後、Login コントローラーが UnauthenticatedController ではなく AuthenticatedController をロードするため、「/login」に無限にリダイレクトし続けることがわかりました。

さて、何らかの理由で継承が壊れているので、Auth コントローラーと Unauth コントローラーの両方を呼び出すかどうかを確認する必要があります。いいえ。UnauthenticatedController を拡張しても Auth を呼び出すだけです。

私はここで途方に暮れています。想像できる限りのことはすべて試しましたが、新しい php プログラマーとして、あなたの頭脳をいくつか試してみようと思いました!

ありがとうございました!

解決策: 本番サーバーの php バージョンとローカルを確認してください

4

1 に答える 1

0

コアクラスの拡張にもこの問題がありました。私の問題は、ローカルサーバーでは機能していましたが、本番サーバーでは機能していなかったことです。本番環境で 404 エラーを受け取りましたが、クラス拡張を使用したコントローラーでのみ発生しました。いくつかの調査の結果、私のローカル サーバーは php バージョン 5.3.x を実行しているのに対し、本番サーバーは 5.2.x を実行していることに気付きました。これを修正するには、本番サーバーを 5.3 にアップグレードする必要がありました。

サイトで使用している php のバージョンを確認するには、次のコマンドをビューに配置します。

<?php echo phpversion() ?>
于 2012-08-27T14:51:33.053 に答える