You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 8.1数据库连接返回HTTP 500,无法使用$conn->connect_error求助

问题原因与解决方法

核心问题:PHP版本差异导致错误处理逻辑失效

PHP 8.0及以上版本中,mysqli构造函数默认会抛出mysqli_sql_exception异常,不再像PHP7.3那样仅设置connect_error属性。所以你的if ($conn->connect_error)判断代码根本没机会执行,异常直接触发了HTTP 500错误。

另外从错误日志能看到,你实际的连接错误是主机名写成了localhostt(多了一个字母t),这个拼写错误必须先修正,否则无论哪种处理方式都无法成功连接。


解决方案1:使用异常捕获处理(推荐,符合PHP8+规范)

把连接代码放到try-catch块中,捕获并处理异常:

// Database settings
const DB_HOST = 'localhost'; // 修正拼写错误
const DB_DATABASE = 'cascade';
const DB_USER = 'root';
const DB_PASSWORD = 'root';
const DB_PORT = '8889';

// Salt encryption
const SALT = '250b0623153be0e93d81c3ab1fe710f07d';

// Connect
try {
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE, DB_PORT);
} catch (mysqli_sql_exception $e) {
    die("Connection failed: " . $e->getMessage());
}

解决方案2:关闭mysqli异常模式(兼容旧代码,不推荐)

如果你想保留原来的connect_error判断逻辑,可以关闭mysqli的异常报告模式,回到PHP7.x的行为:

// Database settings
const DB_HOST = 'localhost'; // 修正拼写错误
const DB_DATABASE = 'cascade';
const DB_USER = 'root';
const DB_PASSWORD = 'root';
const DB_PORT = '8889';

// Salt encryption
const SALT = '250b0623153be0e93d81c3ab1fe710f07d';

// 关闭mysqli异常模式,切换为传统错误报告
mysqli_report(MYSQLI_REPORT_OFF);

// Connect
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE, DB_PORT);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

内容的提问来源于stack exchange,提问作者Andrew Webb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:57:26