Подтвердить что ты не робот

Почему Code Igniter дает мне белую страницу?

Эй, не знаю, почему CodeIgniter дает мне пустую страницу при загрузке простой модели. Я нарушаю код вниз, назад, и я не могу понять, что ломается. Здесь контроллер:

class Leads extends Controller {

function Leads() {
    parent::Controller();
    $this->load->scaffolding('leads');
  }

function index() {
    $data = array( 'title' => 'Lead Management' );

    $this->load->view('html_head', $data);
    $this->load->view('leads/home');
    $this->load->view('html_foot');

  }

function view() {
    $this->load->model('Leads');
    $this->load->view('html_head');
    $this->load->view('leads/view');
    $this->load->view('html_foot');
  }

}

Здесь модель:

class Leads extends Model {

function Leads()    {
    parent::Model();
}

}

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

4b9b3361

Ответ 1

Оба ваших класса называются "Leads". Когда CI включает их, они загружаются в одно и то же пространство имен. Вероятно, у вас есть ошибка "Cannot redeclare class 'Leads'". Попробуйте переименовать модель, и вы должны быть в порядке.

Изменить: угадать подтверждено

Ответ 2

А, классический белый экран смерти. Я столкнулся с этим в первый раз, когда использовал CI. Невероятно разочаровывает то, что такая популярная структура может вызвать что-то вроде этого без вывода ошибок.

В моем конкретном случае это было потому, что я попытался использовать класс Database с MySQLi, но в моей целевой среде не установлен модуль MySQLi. По какой-то причине CI подавил все обычные ошибки, поэтому он обратился к 2-минутному расследованию двухчасового расследования.

Итак, чтобы быть сказанным, я бы проверил следующие вещи:

  • error_reporting установлен на E_ALL в вашем php.ini и display_errors включен.
  • Включите log_errors.
  • Убедитесь, что классы, которые вы используете, не полагаются на специальный PHP-модуль, который у вас может не быть

Если вы не можете найти что-либо с выходом ошибки, вам придется копать глубже. Если у вас установлен xdebug, я бы настоятельно рекомендовал использовать этот... окружить свой код в трассировке и посмотреть, где он задыхается.

Мне пришлось найти причину моего WSOD, свернув сами классы каркасов и выгружая выходные данные (нет xdebug). Это не весело, но в итоге это сработало.

Ответ 3

Как предположил Кэсси, это проблема с вашим наименованием - CI не может иметь дело с моделями и контроллерами с тем же именем. Переименуйте модель Leads на что-то еще и попробуйте перезагрузить страницу. Это должно решить проблему.

Ответ 4

Я дифференцирую свои контроллеры и модели, добавляя имена _controller или _model в классы. Это устраняет путаницу классов. Попробуйте переименовать их, как, например, Leads_Controler и Leads_Model.

Ответ 5

Еще одна причина белого экрана смерти - включить кеширование запросов или log lutputtibg, при этом соответствующая папка не может быть записана. Это досталось мне несколько раз!

Ответ 6

Просто решил ту же проблему после очень неприятной ночи, проведенной в библиотеках CI.

Как заметил Зомбат, моя проблема заключалась в том, что я забыл установить модуль php5-mysql в своем Linux-окне.

После того как apt-get установил модуль mysql, все началось, как ожидалось.

Нет, я знаю. Но я бы ожидал лучшего поведения со стороны CI при обработке подобных исключений. Одна строка журнала сохранила бы кучу часов и проклятий.

Ответ 7

У меня была белая пустая страница после использования моей первой модели. Решение - если вы используете Codeigniter 2+, вам нужно перейти от CI_Model вместо Model. поэтому класс модели должен сказать class myModel extends CI_Model. Это помогло мне после 4 часов поиска.