Codeigniter /application/core/Frontend_Controller.php не найден на реальном сервере

1

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

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

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

Я использую 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);
    }

}

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

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

  • 0
    Надеюсь, эта ссылка поможет: stackoverflow.com/questions/4845806/…
  • 0
    Нет, это не мое дело .. спасибо за помощь.
Теги:
codeigniter

4 ответа

1
Лучший ответ

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

  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 контроллера Frontend.

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

Наслаждаться..!!

2

Изменить:

include_once('Frontend_Controller.php');

Для того, чтобы:

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

В домашнем контроллере

2

Поместите этот код в конец APPPATH. 'config.php' Файл 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 / config.php Номер строки: 526 Обратный след: Файл: /home/acephm3/public_html/phenomesoft.com/application/config/ Строка config.php: 526 Функция: _error_handler Файл: /home/acephm3/public_html/phenomesoft.com/application/controllers/Home.php Строка: 3 Функция: spl_autoload_call Файл: /home/acephm3/public_html/phenomesoft.com/index. PHP строка: 292 Функция: require_once
  • 0
    Попробуй. Я изменил это.
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 {

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню