DVWA--登录页面错误问题 469 | | PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in C:\web\DVWA\dvwa\includes\dvwaPage.inc.php:469

1         // MySQL PDO Prepared Statements (for impossible levels)
2         $db = new PDO('mysql:host=' . $_DVWA[ 'db_server' ].';dbname=' . $_DVWA[ 'db_database' ].';charset=utf8', $_DVWA[ 'db_user' ], $_DVWA[ 'db_password' ]);
3         $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
4         $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

错误点如上 ↑

解决方法适用条件:

         以下2项配置正确。

         extension = php_pdo.dll

         extension = php_pdo_mysql.dll

错误原因:

在:

          DVWA\dvwa\includes\dvwaPage.inc.php

DVMA 默认的配置:

          $_DVWA[ 'default_security_level' ] = 'impossible';

我们需要的实验环境一般都修改为:

          $_DVWA[ 'default_security_level' ] = 'low';

注意这里有句注释:

          // MySQL PDO Prepared Statements (for impossible levels) 意思是为PDO的预设impossible等级的检查,因为实际用的是low 所以可以 咔嚓掉了

 

正确做法:

          

        // MySQL PDO Prepared Statements (for impossible levels)
        //$db = new PDO('mysql:host=' . $_DVWA[ 'db_server' ].';dbname=' . $_DVWA[ 'db_database' ].';charset=utf8', $_DVWA[ 'db_user' ], $_DVWA[ 'db_password' ]);
        //$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        //$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);


关于PDO,百度百科解释如下:

              PDO一是PHP数据对象(PHP Data Object)的缩写。

              并不能使用PDO扩展本身执行任何数据库操作,必须使用一个database-specific PDO driver(针对特定数据库的PDO驱动)访问数据库服务器

              PDO并不提供数据库抽象,它并不会重写SQL或提供数据库本身缺失的功能,如果你需要这种功能,你需要使用一个更加成熟的抽象层。

重要的分界点:

              PDO需要PHP5核心OO特性的支持,所以它无法运行于之前的PHP版本。

              在Unix环境下PHP5.X以上版本中。

              在Lnux环境下PHP5.X以上版本中。

 错误全码:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'could not find driver' in C:\web\DVWA\dvwa\includes\dvwaPage.inc.php:469
Stack trace:
#0 C:\web\DVWA\dvwa\includes\dvwaPage.inc.php(469): PDO->__construct('mysql:host=loca...', 'root', '123123')
#1 C:\web\DVWA\login.php(8): dvwaDatabaseConnect()
#2 {main}
  thrown in C:\web\DVWA\dvwa\includes\dvwaPage.inc.php on line 469

  

 

        由于是第一次接触PHP,没有注意到注释,导致查了一晚上,嗯可以这么说晚上7点到夜里1点27,真是够了。希望后来的不要出现这种问题,或许只是因为我是在自学哈哈。

 

posted @ 2016-11-18 01:31  银月星  阅读(965)  评论(0编辑  收藏  举报