【phpMyAdmin/PostgreSQL/php】PHPを使ってPostgreSQLのデータベースに接続できない時の解決方法

PHP
スポンサーリンク

どうもこんにちは、まったけです。

プログラムを全くやった事のないまったけは、DB接続が出来ずに非常に悩みました。

その時の問題を解決した方法を紹介したいと思います。

ちなみに環境は、MANP+concrete5、OSはwindows 2019 serverです。

※本サイトはアフィリエイト広告を利用しています。

スポンサーリンク

PHPを使ってPostgreSQLのデータベースに接続できない時の解決方法を紹介

環境

MANP+concrete5、OSはwindows 2019 server

実際のエラー

実際どんなエラーが出ていたかというと、PostgreSQLのBDに接続できないとのエラーが出ておりました。下記表示です。

エラーコード: could not find driver

PostgreSQLのデータベースに接続コード

このコードをネットを検索しながら、コードを書いてみましたが、内部のphpMyAdminの接続はうまくいきましたが、PostgreSQLではうまくいきません。

エラー内容から、DBをうまく接続できていないようです。実際のコードはこうです。

try{
$dbh new PDO(‘pgsql:host=**.**.**.***;port=****; dbname=*****”,” ‘******’, ‘******’);
echo “OK!”;

$sql = ‘SELECT * FROM “TABLE NAME” WHERE title LIKE :title ORDER BY time DESC’;

$stmt= $dbhprepare($sql);
$stmt bindValue(‘title’, “%****%”);
$stmt->execute();

$result = $stmt->fetchall (PDO::FETCH_ASSOC);
$dbh = null;
}

PostgreSQLのPHP PDO接続条件を確認

PHPの公式ホームページを確認しました。

PHP: インストール手順 - Manual

どうやら、Windowsの場合は、必要なDLLがあるようです。必要なDLLは下記のようです。

Windows ユーザ

php_pdo.dll をはじめに指定し、 さらにその他のデータベース固有の DLL について、実行時に dl() で読み込むか php.ini の中で php_pdo.dll に引き続いて指定します。
たとえば次のようになります。

extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_informix.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll

php.iniを確認する

windowsの中のファイルからphp.iniを探し、dllを確認したいと思います。

実際にのフォルダは、以下のフォルダに保存されていました。

c:\MAMP\conf\php7.4.16

ここは使用しているMAMPのバージョンやPHPのバージョンによって少し違う場合も会えるかもしれません。

上記の足りないdllを追加します。足りないものを上記からコピーし貼り付けるか”;”を取れば大丈夫です。

必要なDLLをフォルダに保存する

下記のホームページから必要なDLLを入力しダウンロードします。

Download DLL for Windows 32 Bit and Windows 64 Bit
Dll Downloader is the most current, most secure, and most easy-to-understand dll download site. On our site, you can fin...

ダウンロードしたdllを保存します。まったけの場合は、以下のフォルダでした。

注意:PHPのバージョンによって、保存場所は変わってきます。

保存場所 : c:\mamp\bin\php\php7.4.16

接続テストをしてみる

接続テストを実施してみましたが、まだ、下記のエラーが発生しています。

エラーコード: could not find driver

まだ、なにか足りないようです。

更にlibpq.dllが必要

ネットを調べてみると、libpq.dllが必要なようです。殆どのサイトに、ヒントになることは書かれていませんでしたが、一つのブログだけヒントが有りました。

windowsの場合は、まずこのdllを入れる必要があるとのこと。

早速、php.iniに下記の様に追加してみます。

;extension=php_pgsql.dll

extension=php_pgsql.dll

サイド接続テストをする

再度、接続テストをしてみました。

画面に『OK!』表示ができました!

まとめ

今回は、PostgreSQLのPHP PDO接続した時のトラブルを解消した方法を紹介しました。

初心者のまったけには非常に難しかったですが、データベースに接続できたときは非常に嬉しかったです。

初心者さんが、この記事にたどり着いて問題が解決できたりしたら嬉しいな。

でも、こんなトラブルには合わないほうがいいよね。

それではまた。

コメント