php - 为什么连接不上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 2012,apache 2.4,php 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.ini 中未启用 openssl。首先打开php.ini文件
如果您使用的是 linux,请找到extension=php_openssl.so并取消注释。
对于 Windows,找到extension=php_openssl.dll并取消注释。
还要确保添加使用 PDO;如果您没有,请在文件顶部。
祝你好运!
推荐阅读
- php - 此路由不支持 POST 方法。调用未定义的方法 Faker\Provider\Image::make()
- javascript - 如何根据缩放调整 div 的大小?
- java - Spring Boot - 从 2.2.5 升级到 2.3.0 后验证停止工作
- python-3.x - PyQt - 使用 QSettings 保存和恢复具有不同类型小部件的动态添加的选项卡
- javascript - 无法访问 req.body,即使使用 body-parser
- docusignapi - 需要用于嵌入式签名者的文档签名 API 的有效身份验证方法列表
- swift - 从firebase检索图像的代码问题
- python - 为什么我的程序会响应“列表索引超出范围”?
- python - 聚类分析:从原点到数据框中的质心欧几里得距离的问题
- c# - C# 中的通用 WPF 绑定?