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”,我就会得到一个无限循环。调试后,我发现登录控制器加载的是 AuthenticatedController 而不是 UnauthenticatedController,因此它会无限地重定向回“/ 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 回答