Почему 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.
Ответы
Ответ 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 часов поиска.