开发者

Why does Code Igniter give me a white page? [closed]

开发者 https://www.devze.com 2022-12-18 11:23 出处:网络
This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time,or an extraordinarily narrow situation that is not generally applic
This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center. Closed 9 years ago.

Hey, not sure why CodeIgniter is giving me a blank page when I load a simple model. I'm breaking the code down, backwards, and I can't figure out what's breaking. Here's the controller:

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

}

Here's the model:

class Leads extends Model {

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

}

The only way I don't get a white page on /view is if I comment out the loading of the mo开发者_Go百科del. I have absolutely no idea what I'm doing wrong, I'm copying the examples and structure literally right off the CI site.


Ah, the classic Codeigniter white screen of death. I ran into this the first time I used CI. Unbelievably frustrating that such a popular framework could cause something like this with no error output.

In my particular case, it was because I attempted to use the Database class with MySQLi, but my target environment didn't have the MySQLi module installed. For some reason, CI suppressed all the usual error output, so it turned a 2-minute investigation into a 2-hour investigation.

So that being said, I'd check the following things:

  • error_reporting set to E_ALL in your php.ini, and display_errors is on.
  • Turn on log_errors as well.
  • Check that the classes you're using don't rely on a special PHP module that you might not have

If you can't find anything with error output, you're going to have to dig deeper. If you have xdebug installed, I'd highly suggest using that... surround your code in a trace and see where it's choking.

I ended up having to find the cause of my WSOD by drilling down through the framework classes itself and dumping output (no xdebug was available). It's not fun, but it eventually worked.


Both your classes are named "Leads". When CI includes these, they are loaded into the same namespace. You probably have a "Cannot redeclare class 'Leads'" error. Try renaming the model and you should be fine.

Edit: guess confirmed


As Cassy guessed, it is a problem with your naming -- CI cannot deal with models and controllers having the same name. Rename you Leads model to something else and try reloading the page. That should fix the problem.


I differentiate my controllers and models by adding the names _controller or _model to the classes. This eliminates confusion of classes. Try renaming them like
Leads_Controler and Leads_Model.


Another reason for White screen of death is enabling query caching or log lutputtibg with the respective folder not being writeable. That's got me a few times!


Just solved the same issue after a very unpleasant night spent stumblin' around into CI libraries.

As Zombat pointed out, my problem was I forgot to install the php5-mysql module in my linux box.

Once apt-get installed the mysql module everything started playing as expected.

Noob, I know. But i would expect a better behaviour by CI in handling such kind of exceptions. A single line of log would have saved a bunch of hours and curses.


I had a white blank page after using my first model. The solution is if you use Codeigniter 2+ you need to extend from CI_Model instead of Model. so the Class of a model should say class myModel extends CI_Model. That helped for me after 4 hours of search.

0

精彩评论

暂无评论...
验证码 换一张
取 消