在 Ubuntu 上让 PHP-FPM 连接 MySQL,通常包含以下几个步骤。下面以 Ubuntu 20.04/22.04 + PHP 8.x + MySQL 8.0 为例说明。
sudo apt update
sudo apt install php-fpm php-mysql mysql-server -y
确认 PHP 版本(例如 php8.1):
php -v
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm
sudo systemctl start mysql
sudo systemctl enable mysql
sudo mysql
CREATE DATABASE testdb;
CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON testdb.* TO 'phpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
<?php
$host = '127.0.0.1';
$db = 'testdb';
$user = 'phpuser';
$pass = 'password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
try {
$pdo = new PDO($dsn, $user, $pass);
echo "MySQL 连接成功";
} catch (PDOException $e) {
echo "连接失败: " . $e->getMessage();
}
?>
<?php
$conn = new mysqli('127.0.0.1', 'phpuser', 'password', 'testdb');
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "MySQL 连接成功";
?>
server {
listen 80;
server_name example.com;
root /var/www/html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
}
sudo nginx -t
sudo systemctl reload nginx
127.0.0.1 而不是 localhost(避免 socket 问题)php -m | grep pdo_mysql
若无输出,重装扩展:
sudo apt install php8.1-mysql
sudo systemctl restart php8.1-fpm
确保:
sudo chown -R www-data:www-data /var/www/html
如果你用的是 Apache + PHP-FPM 或 Docker 环境,可以告诉我,我可以给你对应配置。