2015-11-15 2 views
0

Я разработал свой сайт на XAMPP на компьютере Win 7, и он отлично работает на localhost. Когда я загрузил его на живой сервер (linux). Он начал показывать мне эту ошибку:Codeigniter /application/core/Frontend_Controller.php не найден на реальном сервере

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

Я проверил и применил все, что мог от Google, но не повезло вообще.

Я использую версию 3.0 CI.

Я поставил $config['subclass_prefix'] = 'MY_';

Created 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); 
    } 

} 

$route['default_controller'] = 'home'; Установить в routes.php.

Что мне еще нужно делать? Обратите внимание, что у меня нет проблем с localhost.

+0

Надеюсь, эта ссылка поможет: http://stackoverflow.com/questions/4845806/codeigniter-2-0-fatal-error-class-controller-not-found-in –

+0

Нет, это не мой случай .. Спасибо за помощь. – Ali

ответ

1

Я скорее использовал anot ее подход, взял меня целый день, чтобы понять это.

  1. Удалены My_Controller.php и Frontend_Controller.php из application/core папки.
  2. Создал новый контроллер Application.php в application/controllers и расширил его с CI_Controller.
  3. создал другой контроллер Frontend.php в application/controllers и расширил его от Application контроллера (Не забудьте включить Application.php в верхней части этого Frontend.php контроллера).
  4. Теперь в моем фактическом контроллере Home.php прилагается Frontend.php наверху и расширенный домашний контроллер от Frontend контроллер.

Это все, теперь каждый раз, когда вы создаете новый контроллер frontend, его удлиняйте от контроллера Frontend.

Теперь таким же образом я могу создать еще один контроллер для своих бэкэнд-контроллеров и расширить все его внешние контроллеры.

Enjoy .. !!

2

Поместите этот код в конце APPPATH . 'config.php' файла:

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

PHP-ошибка была обнаружена Серьезность: Обратите внимание Сообщение: Использование неопределенная константа EXT - предполагаемую 'EXT' Имя файла: конфиг/config.php Порядковый номер: 526 Backtrace: Файл:/домашний /acephm3/public_html/phenomesoft.com/application/config/config.php Line: 526 Функция: _error_handler Файл: /home/acephm3/public_html/phenomesoft.com/application/controllers/Home.php Line: 3 Функция: spl_autoload_call Файл: /home/acephm3/public_html/phenomesoft.com/index.php Линия: 292 Функция: require_once – Ali

+0

Попробуйте прямо сейчас. Я изменил это. – Tpojka

1

Изменение:

include_once('Frontend_Controller.php'); 

To:

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

В Home контроллер

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 { 

} 
Смежные вопросы