CodeIgniter - 部署到服务器时控制器双重继承中断

时间:2012-08-27 14:31:26

标签: php codeigniter inheritance

我真的需要一些指导,因为对于像我这样的初学者来说,这个问题非常令人困惑和极不相同。

我正在运行具有最新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控制器加载了AuthenticatedController而不是UnauthenticatedController,所以它会无限地重定向回“/ login”。

好吧,现在继承因某种原因被破坏所以我需要检查它是否同时调用Auth和Unauth控制器。不。只要调用Auth,即使它扩展了UnauthenticatedController。

我在这里不知所措,我已经尝试了我能想到的一切,但作为一个新的PHP程序员,我想我会选择一些你的大脑来尝试!

谢谢!

解决方案: 检查您的生产服务器php版本与本地

1 个答案:

答案 0 :(得分:0)

我在扩展核心类时遇到了这个问题。我的问题是在我的本地服务器上工作,但不在我的生产服务器上。我在生产中收到了404错误,只在我使用类扩展的控制器上收到错误。经过一些研究后,我注意到我的本地服务器运行的是php版本5.3.x,而我的生产服务器运行的是5.2.x.要解决此问题,我必须将生产服务器升级到5.3。

要了解您的网站使用的是哪个版本的php,请将此命令放在您的视图中:

<?php echo phpversion() ?>