我在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上没有任何问题。
答案 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)
我宁愿使用另一种方法,花了我一整天才弄明白。
My_Controller.php
文件夹中删除了Frontend_Controller.php
和application/core
。Application.php
中创建了一个新控制器application/controllers
,并将其从CI_Controller
扩展。Frontend.php
中创建了另一个控制器application/controllers
,并将其从Application
控制器进行了扩展(不要忘记将Application.php
包含在此Frontend.php
的顶部控制器)。Home.php
包含Frontend.php
位于顶部,扩展家庭控制器来自Frontend
控制器。这就是全部,现在每次创建新的前端控制器时都会从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 {
}