title: Fatal error: Class 'CI_Controller' not found
body: <p>When I try to access the localhost for my xampp server, an error shows up like this:</p>
  
  <blockquote>
    <p>Fatal error: Class 'CI_Controller' not found in<br>
    C:\xampp\htdocs\system\core\CodeIgniter.php on line 226</p>
  </blockquote>
  
  <p>CodeIgniter.php line 222-227:</p>
  
  <pre><code>require BASEPATH.'core/Controller.php';
  
  function &amp;get_instance()
  {
      return CI_Controller::get_instance();
  }
  </code></pre>
  
  <p>Full CodeIgniter.php</p>
  
  <pre><code>&lt;?php
   if (!defined('BASEPATH')) {
   exit('No direct script access allowed');
   }
  /*
   * CodeIgniter
   *
   * An open source application development framework for PHP 5.1.6 or newer
   *
   * @package     CodeIgniter
   * @author      ExpressionEngine Dev Team
   * @copyright   Copyright (c) 2008 - 2014, EllisLab, Inc.
   * @license     http://codeigniter.com/user_guide/license.html
   * @link        http://codeigniter.com
   * @since       Version 1.0
   * @filesource
   */
  
  // ------------------------------------------------------------------------
  
  /*
   * System Initialization File
   *
   * Loads the base classes and executes the request.
   *
   * @package     CodeIgniter
   * @subpackage  codeigniter
   * @category    Front-controller
   * @author      ExpressionEngine Dev Team
   * @link        http://codeigniter.com/user_guide/
   */
  
  /*
   * CodeIgniter Version
   *
   * @var string
   *
   */
   define('CI_VERSION', '2.2.0');
  
  /*
   * CodeIgniter Branch (Core = TRUE, Reactor = FALSE)
   *
   * @var boolean
   *
   */
      define('CI_CORE', false);
  
  /*
   * ------------------------------------------------------
   *  Load the global functions
   * ------------------------------------------------------
   */
  require BASEPATH.'core/Common.php';
  
  /*
   * ------------------------------------------------------
   *  Load the framework constants
   * ------------------------------------------------------
   */
      if (defined('ENVIRONMENT') and         
  file_exists(APPPATH.'config/'.ENVIRONMENT.'/constants.php')) {
      require APPPATH.'config/'.ENVIRONMENT.'/constants.php';
  } else {
      require APPPATH.'config/constants.php';
  }
  
  /*
   * ------------------------------------------------------
   *  Define a custom error handler so we can log PHP errors
   * ------------------------------------------------------
   */
  set_error_handler('_exception_handler');
  
  if (!is_php('5.3')) {
      @set_magic_quotes_runtime(0); // Kill magic quotes
  }
  
  /*
   * ------------------------------------------------------
   *  Set the subclass_prefix
   * ------------------------------------------------------
   *
   * Normally the "subclass_prefix" is set in the config file.
   * The subclass prefix allows CI to know if a core class is
   * being extended via a library in the local application
   * "libraries" folder. Since CI allows config items to be
   * overriden via data set in the main index. php file,
   * before proceeding we need to know if a subclass_prefix
   * override exists.  If so, we will set this value now,
   * before any classes are loaded
   * Note: Since the config file data is cached it doesn't
   * hurt to load it here.
   */
      if (isset($assign_to_config['subclass_prefix']) and     $assign_to_config['subclass_prefix'] != '') {
      get_config(array('subclass_prefix' =&gt;     $assign_to_config['subclass_prefix']));
  }
  
  /*
   * ------------------------------------------------------
   *  Set a liberal script execution time limit
   * ------------------------------------------------------
   */
  if (function_exists('set_time_limit') == true and @ini_get('safe_mode') == 0) {
      @set_time_limit(300);
  }
  
  /*
   * ------------------------------------------------------
   *  Start the timer... tick tock tick tock...
   * ------------------------------------------------------
   */
  $BM = &amp;load_class('Benchmark', 'core');
  $BM-&gt;mark('total_execution_time_start');
  $BM-&gt;mark('loading_time:_base_classes_start');
  
  /*
   * ------------------------------------------------------
   *  Instantiate the hooks class
   * ------------------------------------------------------
   */
  $EXT = &amp;load_class('Hooks', 'core');
  
  /*
   * ------------------------------------------------------
   *  Is there a "pre_system" hook?
   * ------------------------------------------------------
   */
  $EXT-&gt;_call_hook('pre_system');
  
  /*
   * ------------------------------------------------------
   *  Instantiate the config class
   * ------------------------------------------------------
   */
  $CFG = &amp;load_class('Config', 'core');
  
  // Do we have any manually set config items in the index.php file?
  if (isset($assign_to_config)) {
      $CFG-&gt;_assign_to_config($assign_to_config);
  }
  
  /*
   * ------------------------------------------------------
   *  Instantiate the UTF-8 class
   * ------------------------------------------------------
   *
   * Note: Order here is rather important as the UTF-8
   * class needs to be used very early on, but it cannot
   * properly determine if UTf-8 can be supported until
   * after the Config class is instantiated.
   *
   */
  
  $UNI = &amp;load_class('Utf8', 'core');
  
  /*
   * ------------------------------------------------------
   *  Instantiate the URI class
   * ------------------------------------------------------
   */
  $URI = &amp;load_class('URI', 'core');
  
  /*
   * ------------------------------------------------------
   *  Instantiate the routing class and set the routing
   * ------------------------------------------------------
   */
      $RTR = &amp;load_class('Router', 'core');
      $RTR-&gt;_set_routing();
  
      // Set any routing overrides that may exist in the main index file
      if (isset($routing)) {
      $RTR-&gt;_set_overrides($routing);
      }
  
  /*
   * ------------------------------------------------------
   *  Instantiate the output class
   * ------------------------------------------------------
   */
      $OUT = &amp;load_class('Output', 'core');
  
  /*
   * ------------------------------------------------------
   *  Is there a valid cache file?  If so, we're done...
   * ------------------------------------------------------
   */
  if ($EXT-&gt;_call_hook('cache_override') === false) {
      if ($OUT-&gt;_display_cache($CFG, $URI) == true) {
          exit;
      }
  }
  
  /*
   * -----------------------------------------------------
   * Load the security class for xss and csrf support
   * -----------------------------------------------------
   */
  $SEC = &amp;load_class('Security', 'core');
  
  /*
   * ------------------------------------------------------
   *  Load the Input class and sanitize globals
   * ------------------------------------------------------
   */
      $IN = &amp;load_class('Input', 'core');
  
  /*
   * ------------------------------------------------------
   *  Load the Language class
   * ------------------------------------------------------
   */
  $LANG = &amp;load_class('Lang', 'core');
  
  /*
   * ------------------------------------------------------
   *  Load the app controller and local controller
   * ------------------------------------------------------
   *
   */
      // Load the base controller class
      require BASEPATH.'core/Controller.php';
  
  function &amp;get_instance()
  {
      return CI_Controller::get_instance();
  }
  
  if (file_exists(APPPATH.'core/'.$CFG-&gt;config['subclass_prefix'].'Controller.php')) {
      require APPPATH.'core/'.$CFG-&gt;config['subclass_prefix'].'Controller.php';
  }
  
  // Load the local application controller
  // Note: The Router class automatically validates the controller path using the router-&gt;_validate_request().
  // If this include fails it means that the default controller in the Routes.php file is not resolving to something valid.
  if (!file_exists(APPPATH.'controllers/'.$RTR-&gt;fetch_directory().$RTR-&gt;fetch_class().'.php')) {
      show_error('Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.');
  }
  
  include APPPATH.'controllers/'.$RTR-&gt;fetch_directory().$RTR-&gt;fetch_class().'.php';
  
  // Set a mark point for benchmarking
  $BM-&gt;mark('loading_time:_base_classes_end');
  
  /*
   * ------------------------------------------------------
   *  Security check
   * ------------------------------------------------------
   *
   *  None of the functions in the app controller or the
   *  loader class can be called via the URI, nor can
   *  controller functions that begin with an underscore
   */
  $class = $RTR-&gt;fetch_class();
  $method = $RTR-&gt;fetch_method();
  
  if (!class_exists($class)
      or strncmp($method, '_', 1) == 0
      or in_array(strtolower($method), array_map('strtolower', get_class_methods('CI_Controller')))
      ) {
      if (!empty($RTR-&gt;routes['404_override'])) {
          $x = explode('/', $RTR-&gt;routes['404_override']);
          $class = $x[0];
          $method = (isset($x[1]) ? $x[1] : 'index');
          if (!class_exists($class)) {
              if (!file_exists(APPPATH.'controllers/'.$class.'.php')) {
                  show_404("{$class}/{$method}");
              }
  
              include_once APPPATH.'controllers/'.$class.'.php';
          }
      } else {
          show_404("{$class}/{$method}");
      }
  }
  
  /*
   * ------------------------------------------------------
   *  Is there a "pre_controller" hook?
   * ------------------------------------------------------
   */
  $EXT-&gt;_call_hook('pre_controller');
  
  /*
   * ------------------------------------------------------
   *  Instantiate the requested controller
   * ------------------------------------------------------
   */
  // Mark a start point so we can benchmark the controller
  $BM-&gt;mark('controller_execution_time_( '.$class.' / '.$method.' )_start');
  
  $CI = new $class();
  
  /*
   * ------------------------------------------------------
   *  Is there a "post_controller_constructor" hook?
   * ------------------------------------------------------
   */
  $EXT-&gt;_call_hook('post_controller_constructor');
  
  /*
   * ------------------------------------------------------
   *  Call the requested method
   * ------------------------------------------------------
   */
  // Is there a "remap" function? If so, we call it instead
  if (method_exists($CI, '_remap')) {
      $CI-&gt;_remap($method, array_slice($URI-&gt;rsegments, 2));
  } else {
      // is_callable() returns TRUE on some versions of PHP 5 for private and protected
      // methods, so we'll use this workaround for consistent behavior
      if (!in_array(strtolower($method), array_map('strtolower', get_class_methods($CI)))) {
          // Check and see if we are using a 404 override and use it.
          if (!empty($RTR-&gt;routes['404_override'])) {
              $x = explode('/', $RTR-&gt;routes['404_override']);
              $class = $x[0];
              $method = (isset($x[1]) ? $x[1] : 'index');
              if (!class_exists($class)) {
                  if (!file_exists(APPPATH.'controllers/'.$class.'.php')) {
                      show_404("{$class}/{$method}");
                  }
  
                  include_once APPPATH.'controllers/'.$class.'.php';
                  unset($CI);
                  $CI = new $class();
              }
          } else {
              show_404("{$class}/{$method}");
          }
      }
  
      // Call the requested method.
      // Any URI segments present (besides the class/function) will be passed to the method for convenience
      call_user_func_array(array(&amp;$CI, $method), array_slice($URI-&gt;rsegments, 2));
  }
  
  // Mark a benchmark end point
  $BM-&gt;mark('controller_execution_time_( '.$class.' / '.$method.' )_end');
  
  /*
   * ------------------------------------------------------
   *  Is there a "post_controller" hook?
   * ------------------------------------------------------
   */
  $EXT-&gt;_call_hook('post_controller');
  
  /*
   * ------------------------------------------------------
   *  Send the final rendered output to the browser
   * ------------------------------------------------------
   */
  if ($EXT-&gt;_call_hook('display_override') === false) {
      $OUT-&gt;_display();
  }
  
  /*
   * ------------------------------------------------------
   *  Is there a "post_system" hook?
   * ------------------------------------------------------
   */
  $EXT-&gt;_call_hook('post_system');
  
  /*
   * ------------------------------------------------------
   *  Close the DB connection if one exists
   * ------------------------------------------------------
   */
  if (class_exists('CI_DB') and isset($CI-&gt;db)) {
      $CI-&gt;db-&gt;close();
  }
  
  /* End of file CodeIgniter.php */
  /* Location: ./system/core/CodeIgniter.php */
  </code></pre>
  
  <p>Full Controller.php</p>
  
  <pre><code>&lt;?php
   if (!defined('BASEPATH')) {
   exit('No direct script access allowed');
   }
   /**
   * CodeIgniter.
   *
   * An open source application development framework for PHP 5.1.6 or newer
   *
   * @author      ExpressionEngine Dev Team
   * @copyright   Copyright (c) 2008 - 2014, EllisLab, Inc.
   * @license     http://codeigniter.com/user_guide/license.html
   *
   * @link        http://codeigniter.com
   * @since       Version 1.0
   * @filesource
   */
  
  // ------------------------------------------------------------------------
  
  /**
   * CodeIgniter Application Controller Class.
   *
   * This class object is the super class that every library in
   * CodeIgniter will be assigned to.
   *
   * @category    Libraries
   *
   * @author      ExpressionEngine Dev Team
   *
   * @link        http://codeigniter.com/user_guide/general/controllers.html
   */
  class CI_Controller
  {
  private static $instance;
  
  /**
   * Constructor.
   */
  public function __construct()
  {
      self::$instance = &amp;$this;
  
      // Assign all the class objects that were instantiated by the
      // bootstrap file (CodeIgniter.php) to local class variables
      // so that CI can run as one big super object.
      foreach (is_loaded() as $var =&gt; $class) {
          $this-&gt;$var = &amp;load_class($class);
      }
  
      $this-&gt;load = &amp;load_class('Loader', 'core');
  
      $this-&gt;load-&gt;initialize();
  
      log_message('debug', 'Controller Class Initialized');
  }
  
  public static function &amp;get_instance()
  {
      return self::$instance;
  }
  }
  // END Controller class
  
  /* End of file Controller.php */
  /* Location: ./system/core/Controller.php */
  </code></pre>
  
  <p>thanks for you time</p>