どうもこんにちは、まったけです。
プログラムを全くやった事のないまったけは、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の公式ホームページを確認しました。
どうやら、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を入力しダウンロードします。
ダウンロードした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接続した時のトラブルを解消した方法を紹介しました。
初心者のまったけには非常に難しかったですが、データベースに接続できたときは非常に嬉しかったです。
初心者さんが、この記事にたどり着いて問題が解決できたりしたら嬉しいな。
でも、こんなトラブルには合わないほうがいいよね。
それではまた。
コメント