Search code examples
phpmysqliiscakephpcakephp-1.3

How do I solve Cake is NOT able to connect to the database on IIS Server running CakePHP 1.3.17


I have setup the CakePHP framework version 1.3.17 on IIS server precisely IIS version 10.0.19041.1 all is well, as i can see the index.php page, however it is not able to connect to a MYSQL 8 database, see database.php configuration settings. How do i check to see what the actual error is and also how do I resolve the connection issue

<?php
/**
 * This is core configuration file.
 *
 * Use it to configure core behaviour ofCake.
 *
 * PHP versions 4 and 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       cake
 * @subpackage    cake.app.config
 * @since         CakePHP(tm) v 0.2.9
 * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
 */
/**
 * In this file you set up your database connection details.
 *
 * @package       cake
 * @subpackage    cake.config
 */
/**
 * Database configuration class.
 * You can specify multiple configurations for production, development and testing.
 *
 * driver => The name of a supported driver; valid options are as follows:
 *      mysql       - MySQL 4 & 5,
 *      mysqli      - MySQL 4 & 5 Improved Interface (PHP5 only),
 *      sqlite      - SQLite (PHP5 only),
 *      postgres    - PostgreSQL 7 and higher,
 *      mssql       - Microsoft SQL Server 2000 and higher,
 *      db2         - IBM DB2, Cloudscape, and Apache Derby (http://php.net/ibm-db2)
 *      oracle      - Oracle 8 and higher
 *      firebird    - Firebird/Interbase
 *      sybase      - Sybase ASE
 *      adodb-[drivername]  - ADOdb interface wrapper (see below),
 *      odbc        - ODBC DBO driver
 *
 * You can add custom database drivers (or override existing drivers) by adding the
 * appropriate file to app/models/datasources/dbo.  Drivers should be named 'dbo_x.php',
 * where 'x' is the name of the database.
 *
 * persistent => true / false
 * Determines whether or not the database should use a persistent connection
 *
 * connect =>
 * ADOdb set the connect to one of these
 *  (http://phplens.com/adodb/supported.databases.html) and
 *  append it '|p' for persistent connection. (mssql|p for example, or just mssql for not persistent)
 * For all other databases, this setting is deprecated.
 *
 * host =>
 * the host you connect to the database.  To add a socket or port number, use 'port' => #
 *
 * prefix =>
 * Uses the given prefix for all the tables in this database.  This setting can be overridden
 * on a per-table basis with the Model::$tablePrefix property.
 *
 * schema =>
 * For Postgres and DB2, specifies which schema you would like to use the tables in. Postgres defaults to
 * 'public', DB2 defaults to empty.
 *
 * encoding =>
 * For MySQL, MySQLi, Postgres and DB2, specifies the character encoding to use when connecting to the
 * database.  Uses database default.
 *
 */
class DATABASE_CONFIG {

    var $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'port' => '3306',
        'login' => 'username',
        'password' => 'mypassword',
        'database' => 'mydatabasename',
        'prefix' => '',
        'cacheMetadata' => false,
        'encoding' => 'utf8'
    );
}

Here's a print screen of what is displayed, when the application is accessed on a browser via http://localhost

enter image description here


Solution

  • Running CakePHP 1.3.17 on IIS server precisely IIS version 10.0.19041.1 requires;

    • PHP version 5.6.x. It will not work with PHP 7 and above
    • MySQL version 5.6. It will not connect to any MySQL version higher than 5.6.

    I had to install XAMPP with MYSQL 5.6 and configure it to use port 3307 because I had another instance of MYSQL 8.0 running on port 3306 which CAKEPHP v1.3.17 could not connect to.

    In database.php, see code used in the database_config class used

    var $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'port' => '3307',
        'login' => 'myappusername',
        'password' => 'mypassword',
        'database' => 'myapp_db',
        'prefix' => '',
        //'encoding' => 'utf8',
    );