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

尝试通过PHP访问数据库时出现ClearDB/Heroku 500错误,php,mysql,heroku,Php,Mysql,Heroku,我已经在我们自己的服务器上多次使用PHP访问MySQL数据库,并且总是使用相同的PHP脚本来访问MySQL数据库(显然更改了登录详细信息)。然而,这是我第一次使用Heroku&ClearDB,我遇到了一些问题 数据库位于我们使用ClearDB的Heroku PHP应用程序中,我访问了ClearDB_数据库_URL以查找用户名、密码、主机名和数据库名称。为了确保我做得正确,我的理解是以下格式: mysql://USER_NAME:PASSWORD@HOST_NAME/DATABASE_NAME?r

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

数据库位于我们使用ClearDB的Heroku PHP应用程序中,我访问了ClearDB_数据库_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错误消息,但只有基于DB的函数才会导致错误


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

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

要么自定义buildpack工作正常,只需要时间就可以激活,要么Heroku在最后进行了更改,解决了我的问题


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

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

要么自定义buildpack工作正常,只需要时间就可以激活,要么Heroku在最后进行了更改,解决了我的问题


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

HTTP错误500->您需要查看Web服务器的错误日志以了解更多信息。如果这与您的PHP脚本有关,您应该启用PHP错误日志,并查看PHP错误日志以获取更多信息。日志似乎说它与mysqli有问题:“无法打开必需的‘classes/class_mysqli.php’”。heroku不支持myslqi吗?这是您的PHP文件(不是PHP扩展名)。我建议你自己去喝杯咖啡;)然后检查带有该错误的文件和行。lol这是因为我的index.php文件中缺少这个“#!/usr/bin/php”。谢谢你告诉我醒醒,我会投票支持你的评论:-)看起来这是你的mysqli类,而不是PHP类。或者您是使用自动加载程序生成该文件名的?设置一个
phpinfo()
并检查可用的扩展名。HTTP错误500->您需要查看Web服务器的错误日志以了解更多信息。如果这与您的PHP脚本有关,您应该启用PHP错误日志,并查看PHP错误日志以获取更多信息。日志似乎说它与mysqli有问题:“无法打开必需的‘classes/class_mysqli.php’”。heroku不支持myslqi吗?这是您的PHP文件(不是PHP扩展名)。我建议你自己去喝杯咖啡;)然后检查带有该错误的文件和行。lol这是因为我的index.php文件中缺少这个“#!/usr/bin/php”。谢谢你告诉我醒醒,我会投票支持你的评论:-)看起来这是你的mysqli类,而不是PHP类。或者您是使用自动加载程序生成该文件名的?设置一个
phpinfo()
并检查你有哪些可用的扩展。你能告诉我们定制的构建包是什么吗?我想这是一年前的版本,所以我可能错了,或者构建包可能已经更改。你能告诉我们定制的构建包是什么吗?我想这是一年前的版本,所以我可能错了,或者构建包可能已经更改。