title: codeigniter - fatal error class 'CI_Controller' not found after upgrade php and apache
body: <p>i am upgrade
       apache From 2.2.19.0 To 2.4.16.0
  And
       php From 5.3.7.0 To 5.6.12.0
  now i get this error:</p>
  
  <blockquote>
    <p>Fatal error: Class 'CI_Controller' not found in system\core\CodeIgniter.php on line 234</p>
  </blockquote>
  
  <p>CodeIgniter.php line 221-235</p>
  
  <pre><code>// Load the base controller class
  require BASEPATH.'core/Controller.php';
  
  /**
   * Reference to the CI_Controller method.
   *
   * Returns current CI instance object
   *
   * @return object
   */
  
  function &amp;get_instance()
  {
      return CI_Controller::get_instance();
  }
  </code></pre>
  
  <p>Full CodeIgniter.php</p>
  
  <pre><code>&lt;?php
  /**
   * CodeIgniter
   *
   * An open source application development framework for PHP 5.2.4 or newer
   *
   * NOTICE OF LICENSE
   *
   * Licensed under the Open Software License version 3.0
   *
   * This source file is subject to the Open Software License (OSL 3.0) that is
   * bundled with this package in the files license.txt / license.rst.  It is
   * also available through the world wide web at this URL:
   * http://opensource.org/licenses/OSL-3.0
   * If you did not receive a copy of the license and are unable to obtain it
   * through the world wide web, please send an email to
   * licensing@ellislab.com so we can send you a copy immediately.
   *
   * @package     CodeIgniter
   * @author      EllisLab Dev Team
   * @copyright   Copyright (c) 2008 - 2013, EllisLab, Inc. (http://ellislab.com/)
   * @license     http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
   * @link        http://codeigniter.com
   * @since       Version 1.0
   * @filesource
   */
  defined('BASEPATH') OR exit('No direct script access allowed');
  
  /**
   * System Initialization File
   *
   * Loads the base classes and executes the request.
   *
   * @package     CodeIgniter
   * @subpackage  CodeIgniter
   * @category    Front-controller
   * @author      EllisLab Dev Team
   * @link        http://codeigniter.com/user_guide/
   */
  
  /**
   * CodeIgniter Version
   *
   * @var string
   *
   */
      define('CI_VERSION', '3.0-dev');
  
  /*
   * ------------------------------------------------------
   *  Load the global functions
   * ------------------------------------------------------
   */
      require_once(BASEPATH.'core/Common.php');
  
  /*
   * ------------------------------------------------------
   *  Load the framework constants
   * ------------------------------------------------------
   */
      if (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.4'))
      {
          @ini_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 ( ! empty($assign_to_config['subclass_prefix']))
      {
          get_config(array('subclass_prefix' =&gt; $assign_to_config['subclass_prefix']));
      }
  
  /*
   * ------------------------------------------------------
   *  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) &amp;&amp; is_array($assign_to_config))
      {
          foreach ($assign_to_config as $key =&gt; $value)
          {
              $CFG-&gt;set_item($key, $value);
          }
      }
  
  /*
   * ------------------------------------------------------
   *  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
          &amp;&amp; $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';
  
      /**
       * Reference to the CI_Controller method.
       *
       * Returns current CI instance object
       *
       * @return object
       */
  
      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;directory.$RTR-&gt;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;directory.$RTR-&gt;class.'.php');
  
      // Set a mark point for benchmarking
      $BM-&gt;mark('loading_time:_base_classes_end');
  
  /*
   * ------------------------------------------------------
   *  Security check
   * ------------------------------------------------------
   *
   *  None of the methods 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;class;
      $method = $RTR-&gt;method;
  
      if ( ! class_exists($class, FALSE) OR $method[0] === '_' OR method_exists('CI_Controller', $method))
      {
          if ( ! empty($RTR-&gt;routes['404_override']))
          {
              if (sscanf($RTR-&gt;routes['404_override'], '%[^/]/%s', $class, $method) !== 2)
              {
                  $method = 'index';
              }
  
              if ( ! class_exists($class, FALSE))
              {
                  if ( ! file_exists(APPPATH.'controllers/'.$class.'.php'))
                  {
                      show_404($class.'/'.$method);
                  }
  
                  include_once(APPPATH.'controllers/'.$class.'.php');
              }
          }
          else
          {
              show_404($class.'/'.$method);
          }
      }
  
      if (method_exists($class, '_remap'))
      {
          $params = array($method, array_slice($URI-&gt;rsegments, 2));
          $method = '_remap';
      }
      else
      {
          // WARNING: It appears that there are issues with is_callable() even in PHP 5.2!
          // Furthermore, there are bug reports and feature/change requests related to it
          // that make it unreliable to use in this context. Please, DO NOT change this
          // work-around until a better alternative is available.
          if ( ! in_array(strtolower($method), array_map('strtolower', get_class_methods($class)), TRUE))
          {
              if (empty($RTR-&gt;routes['404_override']))
              {
                  show_404($class.'/'.$method);
              }
              elseif (sscanf($RTR-&gt;routes['404_override'], '%[^/]/%s', $class, $method) !== 2)
              {
                  $method = 'index';
              }
  
              if ( ! class_exists($class, FALSE))
              {
                  if ( ! file_exists(APPPATH.'controllers/'.$class.'.php'))
                  {
                      show_404($class.'/'.$method);
                  }
  
                  include_once(APPPATH.'controllers/'.$class.'.php');
              }
          }
  
          $params = array_slice($URI-&gt;rsegments, 2);
      }
  
  /*
   * ------------------------------------------------------
   *  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
   * ------------------------------------------------------
   */
      call_user_func_array(array(&amp;$CI, $method), $params);
  
      // 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');
  
  /* 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
   *
   * @package     CodeIgniter
   * @author      ExpressionEngine Dev Team
   * @copyright   Copyright (c) 2008 - 2011, 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.
   *
   * @package     CodeIgniter
   * @subpackage  Libraries
   * @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>its possible becuase htaccess?</p>
  
  <p><strong>Hint: i am searching in site, google and ... but i don't get any solution, i waste my time 2 day. :-(</strong></p>