I'm migrating our Web site to CMS Made Simple, it worked here with postgres-8.4, but stopped working when I upgraded to postgres-9.0.0 (and I'm now running 9.0.3). This is with php-5.2.17 on Slackware-13.1. I need help since I don't know PHP or ADOdb. /var/log/httpd/error_log shows: [Tue Apr 05 16:45:39 2011] [error] [client 127.0.0.1] PHP Fatal error: Attempt to connect to database cms on rshepard@localhost failed in /var/www/htdocs/cmsms/lib/adodb.functions.php on line 85 I've attached a copy of that function. So far the message I posted to the adodb mail list yesterday is the only one there, and there's no response to my help request on the phplens adodb-php Web forum. Rich
<?php /** * @package CMS */ /** * A method to initialize the connection with the CMSMS configured database. * * @internal * @access private */ function load_adodb() { global $gCms; global $ADODB_vers; $config =& $gCms->GetConfig(); // @TODO: Remove dependence on PEAR for error handling if ($config['debug'] == true) { #@include_once(cms_join_path(dirname(__FILE__), $config['use_adodb_lite'] == true ? 'adodb_lite' : 'adodb', 'adodb-errorpear.inc.php')); } define('ADODB_OUTP', 'debug_sql'); //define('ADODB_ERROR_HANDLER', 'adodb_error'); $loaded_adodb = false; if ($config['use_adodb_lite'] == false || (isset($USE_OLD_ADODB) && $USE_OLD_ADODB == 1)) { # CMSMS is configured to use full ADOdb $full_adodb = cms_join_path(dirname(__FILE__),'adodb','adodb.inc.php'); if (! file_exists($full_adodb)) { # Full ADOdb cannot be found, show a debug error message $gCms->errors[] = 'CMS Made Simple is configured to use the full ADOdb Database Abstraction library, but it\'s not in the lib' .DIRECTORY_SEPARATOR. 'adodb directory. Switched back to ADOdb Lite.'; } else { # Load (full) ADOdb require($full_adodb); $loaded_adodb = true; } } if (!$loaded_adodb) { $adodb_light = cms_join_path(dirname(__FILE__),'adodb_lite','adodb.inc.php'); # The ADOdb library is not yet included, try ADOdb Lite if (file_exists($adodb_light)) { # Load ADOdb Lite require($adodb_light); } else { # ADOdb cannot be found, show a message and stop the script execution die('The ADOdb Lite database abstraction library cannot be found, CMS Made Simple cannot load.'); } } define('CMS_ADODB_DT', $config['use_adodb_lite'] ? 'DT' : 'T'); } /** * A method to re-initialize connections to the CMSMS configured database. * This method should be used by any UDT's or other plugins that use any other method * than the standard CMSMS supplied database object to connect to a database. * */ function & adodb_connect() { global $gCms; $config =& $gCms->GetConfig(); $dbinstance =& ADONewConnection($config['dbms'], 'pear:date:extend:transaction'); $dbinstance->raiseErrorFn = "adodb_error"; $conn_func = (isset($config['persistent_db_conn']) && $config['persistent_db_conn'] == true) ? 'PConnect' : 'Connect'; if(!empty($config['db_port'])) $dbinstance->port = $config['db_port']; $connect_result = $dbinstance->$conn_func($config['db_hostname'], $config['db_username'], $config['db_password'], $config['db_name']); if (FALSE == $connect_result) { $str = "Attempt to connect to database {$config['db_name']} on {$config['db_username']}@{$config['db_hostname']} failed"; trigger_error($str,E_USER_ERROR); die($str); } $dbinstance->raiseErrorFn = null; $dbinstance->SetFetchMode(ADODB_FETCH_ASSOC); if ($config['debug'] == true) { $dbinstance->debug = true; #$dbinstance->LogSQL(); } if ($config['dbms'] == 'sqlite') { $dbinstance->Execute('PRAGMA short_column_names = 1;'); sqlite_create_function($config['use_adodb_lite'] ? $db->connectionId : $db->_connectionID, 'now', 'time', 0); } else { if(!empty($config['default_encoding']) && $config['default_encoding'] == 'utf-8' && $config['set_names'] == true) { $dbinstance->Execute("SET NAMES 'utf8'"); } } $db =& $dbinstance; return $db; } /** * @ignore */ function adodb_error($dbtype, $function_performed, $error_number, $error_message, $host, $database, &$connection_obj) { if(file_exists(cms_join_path(dirname(CONFIG_FILE_LOCATION), 'db_error.html'))) { include_once cms_join_path(dirname(CONFIG_FILE_LOCATION), 'db_error.html'); exit; } else { echo "<strong>Database Connection Failed</strong><br />"; echo "Error: {$error_message} ({$error_number})<br />"; echo "Function Performed: {$function_performed}<br />"; echo "Host/DB: {$host}/{$database}<br />"; echo "Database Type: {$dbtype}<br />"; } } ?>