在实时服务器

时间:2015-11-15 15:13:17

标签: php codeigniter

我在Win 7机器上的XAMPP开发了我的网站,它在localhost上运行得很好。当我将它上传到实时服务器(linux)。它开始向我显示这个错误:

Fatal error: Class 'Frontend_Controller' not found in /home/acephm3/public_html/phenomesoft.com/application/controllers/Home.php on line 3

我已经检查并应用了谷歌的一切,但根本没有运气。

我正在使用CI 3.0.3版。

我已设置$config['subclass_prefix'] = 'MY_';

My_Controller.php

中按如下方式创建/application/core
class My_Controller extends CI_Controller {

    public function __construct() {
        parent::__construct();
        // Your own constructor code

    }

    public function send_mail($from, $from_name, $to, $subject, $message, $smtp, $debug) { 

        $this->load->library('email');

        if (!$smtp) {

            $this->email->from($from, $from_name);
            $this->email->to($to);

            $this->email->subject($subject);
            $this->email->message($message);

            if ( $this->email->send() ) {

                $this->session->set_flashdata('message', 'We\'ve received your message. Thank you for contacting us.');
                redirect('contact_us');

            } else {

                if ($debug) {
                    echo $this->email->print_debugger();
                }

                return false;

            }

        }

    }

}

包括:

include_once('Frontend_Controller.php');

Frontend_Controller.php中创建/application/core/,如下所示:

class Frontend_Controller extends My_Controller {

    public $data;

    public function __construct()
    {
        parent::__construct();
        // Your own constructor code

        $this->data = array();
    }

    public function _load_template($tpl, $data)
    {
        $this->load->view('frontend/includes/header', $data);
        $this->load->view('frontend/'.$tpl, $data);
        $this->load->view('frontend/includes/footer', $data);
    }

}

Home.php下创建了一个控制器apllication/controllers/

class Home extends Frontend_Controller {

    public function __construct() {
        parent::__construct();
        // Your own constructor code
    }

    public function index(){
        $this->_load_template('home', $this->data);
    }

}

在routes.php。

中设置$route['default_controller'] = 'home';

我还需要做什么?请再次注意我在localhost上没有任何问题。

4 个答案:

答案 0 :(得分:3)

将此代码放在APPPATH . 'config.php'文件的末尾:

spl_autoload_register(function ($class) {
    if (substr($class,0,3) !== 'CI_') {
        if (file_exists($file = APPPATH . 'core/' . $class . '.php')) {
            include $file;
        }
    }
});

答案 1 :(得分:2)

变化:

include_once('Frontend_Controller.php');

要:

include_once( APPPATH.'core/Frontend_Controller.php' );

在家庭控制器中

答案 2 :(得分:1)

我宁愿使用另一种方法,花了我一整天才弄明白。

  1. My_Controller.php文件夹中删除了Frontend_Controller.phpapplication/core
  2. Application.php中创建了一个新控制器application/controllers,并将其从CI_Controller扩展。
  3. Frontend.php中创建了另一个控制器application/controllers,并将其从Application控制器进行了扩展(不要忘记将Application.php包含在此Frontend.php的顶部控制器)。
  4. 现在我的实际控制器Home.php包含Frontend.php位于顶部,扩展家庭控制器来自Frontend控制器。
  5. 这就是全部,现在每次创建新的前端控制器时都会从Frontend控制器扩展它。

    现在以同样的方式,我可以为我的后端控制器创建另一个控制器,并从中扩展我的所有后端控制器。

    享受.. !!

答案 3 :(得分:0)

你可以尝试的另一种方式是

文件名: MY_Controller.php

<?php

class MY_Controller extends CI_Controller {
   // Code Here
}

class Frontend_Controller extends MY_Controller {
    // Code here
}

将前端控制器类与MY_Controller.php放在同一个文件中

家庭控制器

文件名:Home.php

<?php

class Home extends Frontend_Controller {

}