ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

搭建SQLi-LABS安全靶场时遇到Fatal error: Uncaught Error: Call to undefined function mysql_connect() 如何解决

搭建SQLi-LABS安全靶场时遇到Fatal error: Uncaught Error: Call to undefined function mysql_connect() 如何解决 项目场景学习sql注入搭建安全靶场搭建靶场初始化的时候,竟然遇到又遇到这种问题来我们分析一下具体的原因并给出具体的解决办法环境描述Windows 10Phpstudy 8.1.1.3以下为SQL安全靶场的版本 sqli-labs-mastersqli-labs-php7-master如果上述下载地址无法打开的话可以点击此处下载所需版本:访问密码:bkpH原因分析Fatal error: Uncaught Error: Call to undefined function mysql_connect() in M:\Data\phpstudy_pro\WWW\sqli-labs-master\sql-connections\sql-connect-1.php:6Stack trace: #0 M:\Data\phpstudy_pro\WWW\sqli-labs-master\sql-connections\test.php(3): include() #1 {main} thrown in M:\Data\phpstudy_pro\WWW\sqli-labs-master\sql-connections\sql-connect-1.php on line 6出现上述问题是因为遇到了 PHP 中 Call to undefined function mysql_connect() 报错mysql_connect()这个函数属于 PHP 的 mysql 扩展函数早期用于连接 MySQL 数据库由于其存在诸多安全缺陷诸如无参数绑定、缺乏安全防护等问题在PHP 5.5.0 版本官方正式将 这个扩展标记为废弃deprecated。版本移除说明PHP 7.0.0 版本官方直接彻底移除了 mysql 扩展该扩展对应的所有函数包括 mysql_connect()、mysql_query()、mysql_fetch_array() 等都不再可用取而代之的是mysqli_connect()原文地址解决方案方法1修改 sqli-labs 的数据库连接文件新手不推荐建议方法2,3哪个地方有问题改哪里找到报错文件 *.php将其中的 mysql 系列函数替换为 mysqli 面向过程函数少量修改即可生效核心替换规则废弃的 mysql 函数对应的 mysqli 面向过程函数说明mysql_connect()mysqli_connect()连接数据库mysql_select_db()直接在 mysqli_connect() 第 4 个参数指定数据库选择数据库mysql_query()mysqli_query($conn, $sql)执行 SQL 语句需传入连接句柄mysql_error()mysqli_error($conn)获取错误信息需传入连接句柄mysql_fetch_array()mysqli_fetch_array($result)获取查询结果集方法2下载对应版本的php即可问题。点击右侧「设置」-「php版本」选择 php版本若未安装先点击「安装」对应版本刷新浏览器错误即可消失。sqli-labs-master建议下载php5.5.0之前的版本;sqli-labs-php7-master建议下载php7.0.0之后的版本。方法3根据已经安装的php下载对应版本的sqli-labs也可以解决问题链接已在前文附上。小结问题根源是 PHP 7.0 移除了 mysql 扩展mysql_connect() 函数已不存在长期项目优先使用 PDOsqli-labs 快速上手可选择 mysqli 替换或临时降级 PHP 5.6mysql 扩展存在安全缺陷无论何种场景都不推荐长期使用优先选择 PDO 或 MySQLi。
返回列表