【问题标题】:mysqli connection error (in root folder works, in subfolder not)mysqli 连接错误(在根文件夹中有效,在子文件夹中无效)
【发布时间】:2013-12-27 16:27:03
【问题描述】:

我有一个文件 my_api.php,其内容如下:

require_once('./api/api_helper.php');
require_once('./includes/db_config.php');
$db = mysqli_connect($dbinfo['host'], $dbinfo['user'], $dbinfo['pass'], $dbinfo['dbname']);
if(mysqli_connect_errno()){
    echo 'MySQLi Error: ' . mysqli_connect_error(); exit;
}

当我将它放入根目录时,一切正常。 现在我放入一个名为 api 的子目录并将文件内容更改为:

require_once('./api_helper.php');
require_once('../includes/db_config.php');
$db = mysqli_connect($dbinfo['host'], $dbinfo['user'], $dbinfo['pass'], $dbinfo['dbname']);
if(mysqli_connect_errno()){
    echo 'MySQLi Error: ' . mysqli_connect_error(); exit;
}

然后我收到以下错误:

警告:mysqli_connect() [function.mysqli-connect]: (HY000/1045): 用户访问被拒绝:'XXXX@localhost'(使用密码:YES) /homepages/XXXX/api/myapi.php 第 13 行 MySQLi 错误:访问被拒绝 对于用户:'XXXX@localhost'(使用密码:YES)

谁能帮我解决它? 谢谢

【问题讨论】:

  • 检查您的主机名、用户名和密码
  • 应该../不是这样./../
  • @Sundar:我已经检查过了。值(在 db_config.php 中)是正确的。当 my_api.php 位于 web 的根文件夹中时,它就可以工作。当它在 api 子文件夹中时,我只得到了错误。
  • @ins0:这也行不通。我只是测试一下。
  • 是的,如果不包含该文件,您应该会遇到不同的错误,因为您 require 该文件...当正确包含该文件时,我看不出数据库连接失败的任何原因

标签: php path mysqli include


【解决方案1】:

已编辑答案。错误

拒绝用户访问:'X​​XXX@localhost'(使用密码:YES)

表示为连接提供了错误的凭据。检查凭据。任何文件夹问题都与此错误无关。

我不想猜测,但这不是一个真正的问题。

可能还有其他包含错误凭据的 db_config.php。

无论哪种方式,操作都不应该像 user 那样只是无助地观看错误,而是做一些事情。挖掘问题根源并不难:回显$dbinfo,使用realpath()检查相对路径,将返回值与所需值进行比较,使用@打开full错误报告987654323@

您编写的程序不是您不知道的黑匣子。它总是有中间结果。您有责任验证它们是否正确,以防整个程序出错。

【讨论】:

  • 我没有眼睁睁地看着错误,因为我在这里发帖之前尝试了很多。没有其他 db_config.php,我通过 var_dump() 回显 $dbinfo。这是一件奇怪的事情,为什么它在子文件夹中就不起作用。这就是我在这里问的原因。
猜你喜欢
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多