PHP: PDOを使用したPHPからMySQLへの接続

このドキュメントはMySQLへの接続ガイドの一部です。完全なガイドはこちらからご覧いただけます:MySQLiとPDOを使用してPHPからMySQLに接続する方法を学びます

👋 Stackheroドキュメントへようこそ!

Stackheroは、高速かつ信頼性の高いデプロイを実現する PHPクラウド プラットフォームを提供しています:

  • シンプルな git push だけで、PHPアプリケーションを数秒で本番環境にデプロイできます。
  • ご自身のドメインを利用可能で、自動HTTPS証明書が設定されます。手動での作業は一切不要です。
  • 自動バックアップワンクリックアップデート、明確で予測可能な料金体系をご利用いただけます。Stackheroがこれらの運用を担当するため、コード開発に集中できます。
  • アプリケーション専用に構築されたプライベートかつ専用インフラ上で、高いパフォーマンスセキュリティを実現します。

ワークフローを効率化し、時間を節約しましょう。 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";

?>

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コードを実行しているシステムにアクセスできる場合、以下のように証明書をインストールできます。

  1. Ubuntu/Debianでは、sudo apt-get install ca-certificatesを実行します
  2. Alpine Linuxでは、apk add ca-certificatesを実行します

システムにこれらの証明書を直接インストールするアクセス権がない場合、手動で証明書をインストールできます。

  1. 証明書をコンピュータにダウンロードします: https://letsencrypt.org/certs/isrgrootx1.pem
  2. isrgrootx1.pemファイルをPHPプロジェクトファイルに追加します。
  3. PDO::MYSQL_ATTR_SSL_CAPATH => '/etc/ssl/certs/'行をコメントアウトします
  4. PDO::MYSQL_ATTR_SSL_CA => 'isrgrootx1.pem'行をコメント解除します