gpt4 book ai didi

php - 尝试通过 PHP 访问数据库时出现 ClearDB/Heroku 500 错误

转载 作者:行者123 更新时间:2023-11-29 00:40:00 26 4
gpt4 key购买 nike

我在自己的服务器上多次使用 PHP 访问 MySQL 数据库,并且总是使用相同的 PHP 脚本(明显更改登录详细信息)。然而,这是我第一次使用 Heroku 和 ClearDB,我遇到了一些问题。

数据库位于我们使用 ClearDB 的 Heroku PHP 应用程序上,我访问了 CLEARDB_DATABASE_URL 以找出用户名、密码、主机名和数据库名称。只是为了确保我做对了,我的理解是这是格式:

mysql://USER_NAME:PASSWORD@HOST_NAME/DATABASE_NAME?reconnect=true

在 MySQL Workbench 中使用这些详细信息,我已经成功登录到数据库并添加了一个表,因此我相信它们是正确的详细信息。

然而,当我尝试使用我的 PHP 脚本访问它时,使用从 URL 中获取的相同变量,我收到以下错误:

HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.

起初我以为 Heroku 应用程序可能已经完成,但我仍然可以访问 PHP 脚本中不尝试访问数据库的任何函数。

正如我所说,这个脚本以前一直有效,所以我不确定问题出在哪里。我的数据库连接位于具有以下构造函数的单独类中:

function __construct()
{
$this->DB_HOST = 'us-cdbr-east-02.cleardb.com';
$this->DB_USERNAME = 'the_username_from_url';
$this->DB_PASSWORD = 'the_password_from_url';
$this->DB_DATABASE = 'the_database_name_from_url';

}

带有一个 connect() 函数,它会在其他类需要时被调用:

function connect()
{
self::$instance = new mysqli($this->DB_HOST, $this->DB_USERNAME, $this->DB_PASSWORD, $this->DB_DATABASE);

if (mysqli_connect_errno()) {
$this->raise_error(printf("Connect failed: %s\n", mysqli_connect_error()));
}

return self::$instance;
}

我 99.9% 确定问题是由尝试连接到数据库引起的。尽管当我在浏览器中测试脚本时它没有返回任何 PHP 错误消息,但只有基于数据库的函数才会导致 500 错误。

我愿意接受任何和所有的建议...

最佳答案

对于那些有同样问题的人,我已经解决了这个问题,但我不是 100% 确定是如何解决的,这是两种可能的事情中的一种。首先,我使用自定义构建包重建了我的 Heroku 应用程序。起初这没有用,所以我认为这不是答案。然后我离开了 Heroku 应用程序两周……突然间它与 mySQLi 兼容了!

自定义 buildpack DID 工作并且只需要时间来激活,或者 Heroku 在他们的末端进行了更改解决了我的问题。

抱歉,我无法提供更好的答案,但正如我所说,在离开 Heroku 应用程序大约 2 周后,问题奇迹般地得到了解决。

关于php - 尝试通过 PHP 访问数据库时出现 ClearDB/Heroku 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com