在 Debian 上用 PHP 连接数据库,通常分 MySQL/MariaDB 和 PostgreSQL 两种常见情况。下面给你最常用、最标准的做法。
sudo apt update
sudo apt install php php-cli php-fpm
sudo apt install php-mysql
sudo apt install php-pgsql
安装后重启 Web 服务:
# Apache
sudo systemctl restart apache2
# Nginx + php-fpm
sudo systemctl restart php8.2-fpm
<?php
$host = '127.0.0.1';
$user = 'dbuser';
$pass = 'dbpass';
$db = 'testdb';
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "MySQL 连接成功";
?>
<?php
$dsn = "mysql:host=127.0.0.1;dbname=testdb;charset=utf8mb4";
$user = 'dbuser';
$pass = 'dbpass';
try {
$pdo = new PDO($dsn, $user, $pass);
echo "PDO 连接成功";
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
?>
<?php
$dsn = "pgsql:host=127.0.0.1;dbname=testdb";
$user = 'pguser';
$pass = 'pgpass';
try {
$pdo = new PDO($dsn, $user, $pass);
echo "PostgreSQL 连接成功";
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
?>
Class "mysqli" not found➡ 没装扩展
sudo apt install php-mysql
sudo systemctl status mysql
localhost(有时走 socket)php -m | grep -E 'mysqli|pdo|pgsql'
✅ 用 PDO
✅ 用 环境变量 存密码
✅ 不要明文写密码在代码里
如果你说的是 SQLite / Redis / 其他数据库,或者你是 CLI / Web 环境不清楚,可以告诉我,我给你对应示例。