首页 > 解决方案 > 为什么连接不上mysql?

问题描述

这是我的代码在 Xampp 的本地 pc 上工作正常:

$this->dbh = new PDO('mysql:host=localhost;dbname=dbdata', 'root','123456');
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

phi.ini:

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll
;extension=php_ftp.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_exif.dll      ; Must be after mbstring as it depends on it
extension=php_mysqli.dll
;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
;extension=php_odbc.dll
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
extension=php_pgsql.dll
;extension=php_shmop.dll

但是当我将它上传到我的服务器时:使用win server 2012apache 2.4php 7.1,发生了给定的错误:

PDOException: PDO::__construct(): PHP 是在没有 openssl 扩展的情况下构建的,无法发送加密的密码

C:\Apache24\htdocs\simsodep\acwork\class\ACWDB.php:41 堆栈跟踪:#0 C:\Apache24\htdocs\simsodep\acwork\class\ACWDB.php(41): PDO->__construct('mysql :host=loca...', 'root', '123456') #1 C:\Apache24\htdocs\simsodep\app\model\Home.php(21): ACWDB->__construct() #2 C:\ Apache24\htdocs\simsodep\acwork\class\ACWController.php(164): Home_model::action_index() #3 C:\Apache24\htdocs\simsodep\acwork\class\ACWController.php(32): ACWController->dispach( ) #4 C:\Apache24\htdocs\simsodep\acwork\class\ACWCore.php(116): ACWController->main(NULL) #5 C:\Apache24\htdocs\simsodep\index.php(44): ACWCore: :acwork() #6 {main} Next PDOException: SQLSTATE[HY000] [1045] C:\Apache24\htdocs\simsodep\acwork\class\ 中的用户 'root'@'localhost' 访问被拒绝(使用密码:YES) ACWDB.php:41 堆栈跟踪:#0 C:\Apache24\htdocs\simsodep\acwork\class\ACWDB.php(41): PDO->__construct('mysql:host=loca...', 'root', '123456') #1 C:\Apache24\htdocs\simsodep\app\model\Home.php(21): ACWDB->__construct() #2 C:\Apache24\htdocs\simsodep\acwork\class\ACWController.php(164): Home_model::action_index() #3 C:\Apache24\htdocs\simsodep\acwork\class\ACWController.php(32): ACWController->dispach() #4 C:\Apache24\htdocs\simsodep\acwork\class\ACWCore .php(116): ACWController->main(NULL) #5 C:\Apache24\htdocs\simsodep\index.php(44): ACWCore::acwork() #6 {main}\Apache24\htdocs\simsodep\acwork\class\ACWController.php(164): Home_model::action_index() #3 C:\Apache24\htdocs\simsodep\acwork\class\ACWController.php(32): ACWController->dispach () #4 C:\Apache24\htdocs\simsodep\acwork\class\ACWCore.php(116): ACWController->main(NULL) #5 C:\Apache24\htdocs\simsodep\index.php(44): ACWCore ::acwork() #6 {main}\Apache24\htdocs\simsodep\acwork\class\ACWController.php(164): Home_model::action_index() #3 C:\Apache24\htdocs\simsodep\acwork\class\ACWController.php(32): ACWController->dispach () #4 C:\Apache24\htdocs\simsodep\acwork\class\ACWCore.php(116): ACWController->main(NULL) #5 C:\Apache24\htdocs\simsodep\index.php(44): ACWCore ::acwork() #6 {main}

为什么连接不上mysql?

标签: php

解决方案


似乎您的 php.ini 中未启用 openssl。首先打开php.ini文件

如果您使用的是 linux,请找到extension=php_openssl.so并取消注释。

对于 Windows,找到extension=php_openssl.dll并取消注释。

还要确保添加使用 PDO;如果您没有,请在文件顶部。

祝你好运!


推荐阅读