Php 为什么可以';你不能连接到mysql吗? 这是我的代码,由Xampp在本地pc上正常工作: phi.ini:

Php 为什么可以';你不能连接到mysql吗? 这是我的代码,由Xampp在本地pc上正常工作: phi.ini:,php,Php,但是当我上传到我的服务器时:使用WinServer2012,Apache2.4,PHP7.1, 出现给定错误: PDO异常:PDO::_construct():PHP是在没有openssl扩展的情况下生成的,无法发送加密的密码 C:\Apache24\htdocs\simodep\acwork\class\ACWDB.php:41堆栈跟踪:#0 C:\Apache24\htdocs\simodep\acwork\class\ACWDB.php(41): PDO->_构造('mysql:host=

但是当我上传到我的服务器时:使用WinServer2012Apache2.4PHP7.1, 出现给定错误:

PDO异常:PDO::_construct():PHP是在没有openssl扩展的情况下生成的,无法发送加密的密码

C:\Apache24\htdocs\simodep\acwork\class\ACWDB.php:41堆栈跟踪:#0 C:\Apache24\htdocs\simodep\acwork\class\ACWDB.php(41): PDO->_构造('mysql:host=loca…','root','123456')#1 C:\Apache24\htdocs\simodep\app\model\Home.php(21): ACWDB->_构造()#2 C:\Apache24\htdocs\simodep\acwork\class\ACWController.php(164): 主页模型::操作索引()#3 C:\Apache24\htdocs\simodep\acwork\class\ACWController.php(32): ACWController->dispach()#4 C:\Apache24\htdocs\simodep\acwork\class\ACWCore.php(116): ACWController->main(空)#5 C:\Apache24\htdocs\simodep\index.php(44):ACWCore::acwork()#6{main} 下一个PDOException:用户的SQLSTATE[HY000][1045]访问被拒绝 中的“root”@“localhost”(使用密码:YES) C:\Apache24\htdocs\simodep\acwork\class\ACWDB.php:41堆栈跟踪:#0 C:\Apache24\htdocs\simodep\acwork\class\ACWDB.php(41): PDO->_构造('mysql:host=loca…','root','123456')#1 C:\Apache24\htdocs\simodep\app\model\Home.php(21): ACWDB->_构造()#2 C:\Apache24\htdocs\simodep\acwork\class\ACWController.php(164): 主页模型::操作索引()#3 C:\Apache24\htdocs\simodep\acwork\class\ACWController.php(32): ACWController->dispach()#4 C:\Apache24\htdocs\simodep\acwork\class\ACWCore.php(116): ACWController->main(空)#5 C:\Apache24\htdocs\simodep\index.php(44):ACWCore::acwork()#6{main}


为什么不能连接到mysql?您的php.ini中似乎没有启用openssl。首先打开php.ini文件

如果您使用的是linux,请查找extension=php\u openssl.so并取消注释

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

还要确保添加使用PDO

祝你好运

来自MySQL文档:

如果您的MySQL安装必须服务于8.0之前的客户端,并且在升级到MySQL 8.0或更高版本后遇到兼容性问题,那么解决这些问题并恢复8.0之前兼容性的最简单方法是重新配置服务器以恢复到以前的默认身份验证插件

更改th my.cnf文件中的默认身份验证插件设置,并重新启动MySQL服务

[mysqld] 默认\u身份验证\u插件=mysql\u本机\u密码

还要更改帐户身份验证插件和密码:

将用户“root”@“localhost”用“password”替换为mysql_native_密码


这对我很有效。

我也有同样的错误。此问题的解决方案:\n -像管理员一样打开控制台 -登录数据库。mysql示例:
mysql-u username-p

记录日志后,它应该可以工作。为什么?我不知道确切情况。

您的模块列表不包括
openssl
。您可以使用
php-m
检查已编译的模块,请同时附加php。ini@Count:我更新了我的问题您可以使用其他工具(如mysql CLI客户端)连接到数据库吗?我尝试了,它无法连接连接失败:mysql服务器已消失名称错误@另外,尝试在更新之后重新启动apache,tôi khởiđộng lạ这是答案还是问题?是答案。
$this->dbh = new PDO('mysql:host=localhost;dbname=dbdata', 'root','123456');
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
;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