PHP: 使用 PDO 将 PHP 连接到 MySQL
本文件是连接到 MySQL指南的一部分。您可以在这里查看完整指南:学习如何使用 MySQLi 和 PDO 从 PHP 连接到 MySQL。
👋 欢迎来到 Stackhero 文档!
Stackhero 提供现成的 PHP 云 解决方案,具有多种优势,包括:
- 通过简单的
git push在几秒钟内 部署您的应用程序。- 使用您自己的域名,并享受 HTTPS 证书的自动配置以增强安全性。
- 享受自动备份、一键更新以及简单、透明和可预测的定价带来的安心。
- 通过私有和专用的 VM获得最佳的性能和强大的安全性。
节省时间并简化您的生活:只需 5 分钟即可试用 Stackhero 的 PHP 云托管 解决方案!
PDO 提供了一种灵活的方法来将 PHP 连接到 MySQL。下面的示例说明了如何使用 PDO 建立连接。它还解决了如果您的系统无法访问 CA 证书时可能出现的 SSL 证书问题。
<?php
$hostname = '<XXXXXX>.stackhero-network.com';
$user = 'root';
$password = '<yourPassword>';
$database = 'root'; // 对于生产环境,请考虑创建专用的数据库和用户
$dsn = "mysql:host=$hostname;dbname=$database";
$options = array(
// 如果您遇到类似 "Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1..." 的错误,
// 可能是因为 /etc/ssl/certs/ 目录缺少 CA 证书
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/',
// PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem',
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => true,
);
$pdo = new PDO($dsn, $user, $password, $options);
$stm = $pdo->query('SELECT VERSION()');
$version = $stm->fetch();
echo '您已连接到运行版本 ' . $version[0] . " 的数据库\n";
?>
处理错误 "SSL operation failed with code 1"
如果您看到类似 Uncaught PDOException: PDO::__construct(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed 的错误,很可能是您的系统的 /etc/ssl/certs/ 目录中没有包含必要的 CA 证书。
如果您可以访问运行 PHP 代码的系统,可以按以下步骤安装证书:
- 在 Ubuntu/Debian 上,运行
sudo apt-get install ca-certificates - 在 Alpine Linux 上,运行
apk add ca-certificates
如果您无法直接在系统上安装这些证书,可以手动安装证书:
- 下载证书到您的计算机:https://letsencrypt.org/certs/isrgrootx1.pem
- 将
isrgrootx1.pem文件添加到您的 PHP 项目文件中。 - 注释掉
PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'这一行 - 取消注释
PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'这一行