PHP 5.6, PDO MySql Connection on Unix (LAMPP) - Fatal Error: SQLSTATE[HY000] [1045] -
this question has answer here:
i try realize cms in mvc oop php.
i use unix system (ubuntu 14) , lampp (xampp) server.
in config.php fetch information database connection xml file.
i try methods before mysql connection pdo in php, , works.
there 2 things different in case is, first is, fetch mysql connection information xml file. second work on unix system.
stackoverflow marked questions duplicate, cant't forward answer. maybee can take look, , explain newbie ;)
mysql error 1045 (28000): access denied user 'bill'@'localhost' (using password: yes)
config.php:
final class config { /**************************************************************************/ /*private function*/ /* * xml content */ private static function getxmlcontent($file){ //set xml file $xmlfile = url.$file; //get content $xmlcontent = simplexml_load_string(file_get_contents($xmlfile)); //json encode $xmljson = json_encode($xmlcontent); //json decode assoc array $xmlarr = json_decode($xmljson, true); return $xmlarr; } /**************************************************************************/ /*public function*/ /* * mysql * @return $mysql (array, assoc) */ public static function db(){ $database = config::getxmlcontent('database.xml'); $mysql = array( 'type' => (string) $database['type'], 'host' => (string) $database['host'], 'database' => (string) $database['database'], 'port' => (string) $database['port'], 'socket' => (string) $database['socket'], 'user' => (string) $database['user'], 'password' => (string) $database['password'], 'prefix' => (string) $database['prefix'] ); //return return (array) $mysql; } /* * pdo * @return $pdo (array, assoc) */ public static function pdo(){ $pdo = array( pdo::attr_persistent => true, pdo::attr_errmode => pdo::errmode_exception, pdo::attr_default_fetch_mode => pdo::fetch_assoc ); //return return (array) $pdo; } }
database.xml:
<?xml version="1.0" encoding="utf-8"?> <sql> <type>mysql</type> <host>localhost</host> <database>database</database> <port>3306</port> <socket></socket> <user>user</user> <password>password</password> <prefix>prefix_</prefix>
lib/model.php:
class model { //construct function __construct(){ //init database $this->database = new database(config::db(), config::pdo()); } }
lib/database.php:
class database extends pdo { /* * construct * * @param $sql (array) * $pdo (array) * * stackoverflow: * https://stackoverflow.com/questions/11622317/error-on-my-pdo-construct-php * https://stackoverflow.com/questions/19582469/uncaught-exception-pdoexception-with-message * * phpmanuel: * http://php.net/manual/de/pdo.construct.php */ public function __construct($sql, $pdo) { /* * parent construct * * @param $dsn (string) * $username (string) * $passwd (string) * $options (array) */ parent::__construct($sql['type'].':host='.$sql['host'].';port='.$sql['port'].';dbname='.$sql['database'], $sql['user'], $sql['password'], $pdo); } }
the php error message:
fatal error: uncaught exception 'pdoexception' message 'sqlstate[hy000] [1045] access denied user 'user'@'localhost' (using password: yes)' in /opt/lampp/htdocs/xxx/application/lib/database.php:37 stack trace: #0 /opt/lampp/htdocs/xxx/application/lib/database.php(37): pdo->__construct('mysql:host=loca...', 'user', 'password', array) #1 /opt/lampp/htdocs/xxx/application/lib/model.php(18): database->__construct(array, array) #2 /opt/lampp/htdocs/xxx/application/lib/controller.php(19): model->__construct() #3 /opt/lampp/htdocs/xxx/application/control/index.php(13): controller->__construct() #4 /opt/lampp/htdocs/xxx/application/lib/application.php(61): index->__construct() #5 /opt/lampp/htdocs/xxx/application/lib/application.php(168): application->loaddefaultcontroller() #6 /opt/lampp/htdocs/xxx/index.php(40): application->init() #7 {main} thrown in /opt/lampp/htdocs/xxx/application/lib/database.php on line 37
i'm new on unix , using terminal, please write down little description if have use it.
i hope can me quick can.
thank you!
first, check database credentials user in config. if not find it, try log $sql
array before pass parent::__construct()
, check errors user credentials here.
Comments
Post a Comment