duanjiashai9140
2016-05-30 13:56
浏览 55
已采纳

CodeIgniter 3未定义属性:MY_Output :: $ load

I wonder if I can get some insight into this problem. I am developing a CI3 website which works fine on GoDaddy (Linux shared hosting), but for some reason the same exact code and same database is producing errors on my local server (my Windows 10 laptop).

I have changed all the config/config.php constants, as well as the config/database.php constants to reflect the local settings.

My config.php base_url:

$config['base_url'] = 'http://simplereo/';

I set up the virtual server simplereo in my host file in Windows, and set up a virtual server in my httpd.conf in Apache, which I have plenty of experience doing, so the local virtual web server is working.

The specific error I get is:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: MY_Output::$load

Filename: core/My_Output.php

Line Number: 8

Backtrace:

File: C:\xampp\htdocs\simplereo\application\core\My_Output.php
Line: 8
Function: _error_handler

File: C:\xampp\htdocs\simplereo\index.php
Line: 302
Function: require_once

The error refers to my MY_OUTPUT class file. The application\core\MY_OUTPUT.php file contains this code:

class MY_Output extends CI_Output {

function __construct()
{
    parent::__construct();
    $this->load->model('user_model');
    $this->load->helper('cookie');
    $this->config->load('security');
    $this->load->library('session');
    $this->load->helper('url');
}

function nocache()
{
    $this->set_header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
    $this->set_header('Cache-Control: no-cache, no-store, must-revalidate, max-age=0');
    $this->set_header('Cache-Control: post-check=0, pre-check=0', FALSE);
    $this->set_header('Pragma: no-cache');
}

}

Although $this->load->model('user_model'); occurs on line 8, I'm pretty sure that line isn't specifically the problem, because I can shuffle the order of the loads, and it will still error out on line 8, or I can eliminate line 8 altogether, and the error will just move on to the next line. Not sure why everything works on the remote server, but not on my local server.

* I think this is the answer: * I took out the first function:

function __construct()
{
    parent::__construct();
    $this->load->model('user_model');
    $this->load->helper('cookie');
    $this->config->load('security');
    $this->load->library('session');
    $this->load->helper('url');
}

...and I'm not getting any errors. Do I even need that __construct()? I may have put it in originally for no good reason.

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dongwo5940 2016-05-30 14:53
    已采纳

    I am not sure, but in general if you override or create your own libraries, $this->load doesn't work because $this only works directly within your controllers, your models, or your views. If you would like to use CodeIgniter's classes from within your own custom classes you can do so as follows:

    $CI =& get_instance();
    
    $CI->load->model('user_model');
    

    PS: Read more about it on CI documentation

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题