title: CodeIgniter Fatal Error
body: <p>I am trying to use a script for a Bitcoin dice site and I think it uses <strong>CodeIgniter</strong>.
  The problem is this error keeps coming up:</p>
  
  <pre><code>Fatal error: Class 'CI_DB_mysql6.000webhost.com_driver' not found in /home/forever/public_html/system/database/DB.php on line 144
  </code></pre>
  
  <p>Here is my <code>DB.php</code> file:</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
   */
  
  // ------------------------------------------------------------------------
  
  /**
   * Initialize the database
   *
   * @category    Database
   * @author      ExpressionEngine Dev Team
   * @link        http://codeigniter.com/user_guide/database/
   * @param   string
   * @param   bool    Determines if active record should be used or not
   */
  function &amp;DB($params = '', $active_record_override = NULL)
  {
      // Load the DB config file if a DSN string wasn't passed
      if (is_string($params) AND strpos($params, '://') === FALSE)
      {
          // Is the config file in the environment folder?
          if ( ! defined('ENVIRONMENT') OR ! file_exists($file_path = APPPATH.'config/'.ENVIRONMENT.'/database.php'))
          {
              if ( ! file_exists($file_path = APPPATH.'config/database.php'))
              {
                  show_error('The configuration file database.php does not exist.');
              }
          }
  
          include($file_path);
  
          if ( ! isset($db) OR count($db) == 0)
          {
              show_error('No database connection settings were found in the database config file.');
          }
  
          if ($params != '')
          {
              $active_group = $params;
          }
  
          if ( ! isset($active_group) OR ! isset($db[$active_group]))
          {
              show_error('You have specified an invalid database connection group.');
          }
  
          $params = $db[$active_group];
      }
      elseif (is_string($params))
      {
  
          /* parse the URL from the DSN string
           *  Database settings can be passed as discreet
           *  parameters or as a data source name in the first
           *  parameter. DSNs must have this prototype:
           *  $dsn = 'driver://username:password@hostname/database';
           */
  
          if (($dns = @parse_url($params)) === FALSE)
          {
              show_error('Invalid DB Connection String');
          }
  
          $params = array(
                              'dbdriver'  =&gt; $dns['scheme'],
                              'hostname'  =&gt; (isset($dns['host'])) ? rawurldecode($dns['host']) : '',
                              'username'  =&gt; (isset($dns['user'])) ? rawurldecode($dns['user']) : '',
                              'password'  =&gt; (isset($dns['pass'])) ? rawurldecode($dns['pass']) : '',
                              'database'  =&gt; (isset($dns['path'])) ? rawurldecode(substr($dns['path'], 1)) : ''
                          );
  
          // were additional config items set?
          if (isset($dns['query']))
          {
              parse_str($dns['query'], $extra);
  
              foreach ($extra as $key =&gt; $val)
              {
                  // booleans please
                  if (strtoupper($val) == "TRUE")
                  {
                      $val = TRUE;
                  }
                  elseif (strtoupper($val) == "FALSE")
                  {
                      $val = FALSE;
                  }
  
                  $params[$key] = $val;
              }
          }
      }
  
      // No DB specified yet?  Beat them senseless...
      if ( ! isset($params['dbdriver']) OR $params['dbdriver'] == '')
      {
          show_error('You have not selected a database type to connect to.');
      }
  
      // Load the DB classes.  Note: Since the active record class is optional
      // we need to dynamically create a class that extends proper parent class
      // based on whether we're using the active record class or not.
      // Kudos to Paul for discovering this clever use of eval()
  
      if ($active_record_override !== NULL)
      {
          $active_record = $active_record_override;
      }
  
      require_once(BASEPATH.'database/DB_driver.php');
  
      if ( ! isset($active_record) OR $active_record == TRUE)
      {
          require_once(BASEPATH.'database/DB_active_rec.php');
  
          if ( ! class_exists('CI_DB'))
          {
              eval('class CI_DB extends CI_DB_active_record { }');
          }
      }
      else
      {
          if ( ! class_exists('CI_DB'))
          {
              eval('class CI_DB extends CI_DB_driver { }');
          }
      }
  
      require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver.php');
  
          // Instantiate the DB adapter
      $driver = 'CI_DB_'.$params['dbdriver'].'_driver';
      $DB = new $driver($params);
  
      if ($DB-&gt;autoinit == TRUE)
      {
          $DB-&gt;initialize();
      }
  
      if (isset($params['stricton']) &amp;&amp; $params['stricton'] == TRUE)
      {
          $DB-&gt;query('SET SESSION sql_mode="STRICT_ALL_TABLES"');
      }
  
      return $DB;
  }
  
  
  
  /* End of file DB.php */
  /* Location: ./system/database/DB.php */
  </code></pre>
  
  <p>This is my <code>database.php</code> file:</p>
  
  <pre><code>&lt;?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  /*
  | -------------------------------------------------------------------
  | DATABASE CONNECTIVITY SETTINGS
  | -------------------------------------------------------------------
  | This file will contain the settings needed to access your database.
  |
  | For complete instructions please consult the 'Database Connection'
  | page of the User Guide.
  |
  | -------------------------------------------------------------------
  | EXPLANATION OF VARIABLES
  | -------------------------------------------------------------------
  |
  |   ['hostname'] The hostname of your database server.
  |   ['username'] The username used to connect to the database
  |   ['password'] The password used to connect to the database
  |   ['database'] The name of the database you want to connect to
  |   ['dbdriver'] The database type. ie: mysql.  Currently supported:
                   mysql, mysqli, postgre, odbc, mssql, sqlite, oci8
  |   ['dbprefix'] You can add an optional prefix, which will be added
  |                to the table name when using the  Active Record class
  |   ['pconnect'] TRUE/FALSE - Whether to use a persistent connection
  |   ['db_debug'] TRUE/FALSE - Whether database errors should be displayed.
  |   ['cache_on'] TRUE/FALSE - Enables/disables query caching
  |   ['cachedir'] The path to the folder where cache files should be stored
  |   ['char_set'] The character set used in communicating with the database
  |   ['dbcollat'] The character collation used in communicating with the database
  |                NOTE: For MySQL and MySQLi databases, this setting is only used
  |                as a backup if your server is running PHP &lt; 5.2.3 or MySQL &lt; 5.0.7
  |                (and in table creation queries made with DB Forge).
  |                There is an incompatibility in PHP with mysql_real_escape_string() which
  |                can make your site vulnerable to SQL injection if you are using a
  |                multi-byte character set and are running versions lower than these.
  |                Sites using Latin-1 or UTF-8 database character set and collation are unaffected.
  |   ['swap_pre'] A default table prefix that should be swapped with the dbprefix
  |   ['autoinit'] Whether or not to automatically initialize the database.
  |   ['stricton'] TRUE/FALSE - forces 'Strict Mode' connections
  |                           - good for ensuring strict SQL while developing
  |
  | The $active_group variable lets you choose which connection group to
  | make active.  By default there is only one group (the 'default' group).
  |
  | The $active_record variables lets you determine whether or not to load
  | the active record class
  */
  
  $active_group = 'default';
  $active_record = TRUE;
  
  $db['default']['hostname'] = 'blocked';
  $db['default']['username'] = 'blocked';
  $db['default']['password'] = 'blocked';
  $db['default']['database'] = 'blocked';
  $db['default']['dbdriver'] = 'mysql';
  $db['default']['dbprefix'] = '';
  $db['default']['pconnect'] = TRUE;
  $db['default']['db_debug'] = TRUE;
  $db['default']['cache_on'] = FALSE;
  $db['default']['cachedir'] = '';
  $db['default']['char_set'] = 'utf8';
  $db['default']['dbcollat'] = 'utf8_general_ci';
  $db['default']['swap_pre'] = '';
  $db['default']['autoinit'] = TRUE;
  $db['default']['stricton'] = FALSE;
  
  
  /* End of file database.php */
  /* Location: ./application/config/database.php */
  </code></pre>
  
  <p>I blocked out my database details for personal reasons.</p>