PostgreSQLのインストール for Windows
※当サイトは、アフィリエイト広告を掲載し、収益を得て運営しています。
PostgreSQL(ポストグレスキューエル-よくポスグレやポストグレスと呼ばれます)は、オープンソースのデータベースソフトウェアです。商用でも使える程に高機能なので、MySQLと共に、非常によく使われます。小規模な案件は、この二種類のデータベースで構築されることがほとんどなので、一般的なWebデザイナーにとってはMySQLと併せて設定等ができるようになっておくといいでしょう。
PostgreSQLはMySQLと異なり、例えばXAMPP等を使う場合でも併せてインストールされませんので、個別にインストールする必要があります。このページでは、Windows環境に単体でPostgreSQLをインストールする方法をご紹介します。
本ページはPostgreSQLのバージョン9.0.4と古い内容です。バージョンを読み替えてなんとかなることもありますが、そうでないこともあります。他サイトでもっと最近解説されている記事がたくさんありますので、そちらをご覧になることをお勧めします。
PostgreSQLのダウンロード
まずはPostgreSQLをダウンロードしてきましょう。オフィシャルサイトのダウンロードページにアクセスしてください。その後、[Windows]と書かれた右側のURLをクリックして最終的なダウンロードページに進みます
バージョンが9.0系と8.x系があるのですが、どちらでもかまいません。9系は新しいバージョンということもあり、現状実際に稼働しているシステムは8系の方が多いと思います。現状を考えて8系にするか、先を見越して9系にするかは考え方によるので一概には言えません。今回は9系を選択することにしました。
また、ダウンロードするファイルですが、Windows用にインストールしますので、Windows版インストーラをダウンロードします。表示された画面の[Windows版インストーラのダウンロード]のすぐ下の、[ダウンロードサイト(EnterpriseDB)]をクリックしてください。
ダウンロードの選択をする画面になります。32bitバージョンのWindowsをお使いの方は[Win x86-32]を。64bitバージョンのWindowsをお使いの方は[Win x86-64]をクリックしてください。
ぱっと見登録しないとだめ!?的な画面になりますが大丈夫。しばらく待っていると、自動的にダウンロードのダイアログボックスが開きます。もし開かない場合は、画面内の[this link]をクリックしてください。ファイルは、デスクトップなど分かりやすい場所にダウンロードしてください。
PostgreSQLのインストール
PostgreSQLをインストールします。ダウンロードしたインストーラファイルをダブルクリックで起動させます。
セットアップウィザードが表示されます。[ Next ]をクリックして次に進めます。
PostgreSQLをインストールするディレクトリ(フォルダ)を決めます。特に問題がなければ、デフォルトのままでかまいません。[ Next ]をクリックして次に進めます。
PostgreSQLのインストールの際には、スーパーユーザ(管理者権限を持つユーザ)である、postgresというWindowsアカウントが作成されます。そのpostgresのパスワードをここで設定します。※余談ですが、postgresのユーザはWindowsのユーザアカウントでは見えない設定になっています。
上側の入力欄にパスワードを、下側の入力欄にも同じものを再入力してください。このパスワードは忘れないように気をつけてくださいね。[ Next ]をクリックして次に進めます。
PostgreSQLで使用するポートを選択します。特に理由がない限り、そのままで問題ありません。[ Next ]をクリックして次に進めます。
言語の設定オプションです。[Default locale]でも自動判別してくれるようですが、ここでは明示的に日本語を選択します。[Japanese, Japan]を選択の上、[ Next ]をクリックして次に進めます。
インストールの準備ができました。[ Next ]をクリックして、インストールを実行します。
インストールが完了するまでしばらく時間がかかります。
下記の画面が表示されたら、これでPostgreSQLのインストールは完了です。[Stack Builder may be~]というチェック欄がありますが、これは補助的な追加ソフトウェアのインストールを行う、スタックビルダというプログラムを起動するかということです。参考までに、ここではスタックビルダを起動させてみます。チェックを付けてから、[Next]をクリックしてください。
スタックビルダ
スタックビルダが立ち上がります。赤枠のリストボックスから、[PostgreSQL 9.0 on port 5432]を選択し、[次へ(N)]をクリックしてください。
フォルダ階層が表示されます。試しに[+]部分をクリックして、展開してみてください。これらの中から、お好きなソフトウェアをインストールできます。
ここでは「こういうものがある」ということを説明したかっただけなので、キャンセルします。[キャンセル(C)]をクリック→[はい(Y)]をクリックしてキャンセルしてください。なお、あとからスタックビルダを立ち上げるには、 [PostgreSQLをインストールしたフォルダ]\bin\stackbuilder.exeから再度起動させることができます。
動作確認してみる
さて、PostgreSQLの動作確認をしてみましょう。ここでは、PHPを使って動作確認したいと思います。下記のコードをDocument Rootより上に、適当なファイル名で配置してください。なお、赤字の[postgrestest]部分は、先ほどご自身で設定したpostgresのパスワードに置きかえてください(ポートを変えた方は、port=5432部分を任意のポートに変更してください)。
$conn = pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=postgrestest");
if (!$conn) {
die('接続できませんでした');
}
echo '接続に成功しました';
?>
ここでは、DocumentRoot(公開ディレクトリ)に、index.phpと名前を付けてファイルを保存しました。これでhttpからアクセス(http://localhost/index.php)して、下記のように表示されれば成功です。
画面が真っ白になってしまう場合
display_errorsがOFFになっている可能性があります。ローカル環境ではエラーが出る方が望ましいので、php.ini内の
display_errors = Off
という部分を、
display_errors = On
にしてApacheを再起動させてみてください。
Call to undefined function pg_connect()となった場合
もし、下記のように表示された場合は、php.iniで、PostgreSQLの拡張モジュールを読み込ませなければなりません。
その場合、まずはPHPのエクステンションディレクトリが設定されているかを確認してください。設定した記憶のない方は、エクステンションディレクトリを登録しておくを参考に、登録しておいてください。
次に、php.iniからエクステンションを読み込ませます。php.ini内の、下記のような場所を探してください。私の環境では、600行付近にありました。
これを、下記のように;(セミコロン)を外してコメントを解除します。
Apacheを再起動し、これでもう一度先ほどのテストスクリプトを実行してみてください。「接続に成功しました」と表示されれば成功です。
それでもなおCall to undefined function pg_connect()となる場合 or Internal Server Error 500になる場合
PHP5.2.6以降をお使いの場合、ちょっとした操作が必要になることがあります。判断の基準としては、PHPフォルダ→extフォルダ内にあるphp_pgsql.dllのファイルサイズが、97kb程度だったときです。(PHP5.2.5では、165kb程度あります)
その場合、PHPフォルダのパスを通してください。C:直下にPHPをインストールした場合は、 C:\php を、XAMPPを利用されていてC:直下にインストールされた方は C:\xampp\php がPHPフォルダとなるはずです。それ以外は各自の環境に読み直してPHPフォルダのパスを通してください(パスの通し方は、PHPインストールのページでご紹介しています)。
パスを通したら、Windowsを再起動して動作確認してみてください。
それでも×2なおCall to undefined function pg_connect()となる場合
PHPのバージョンにより(?)それでもうまくいかない場合があるようです。私も確定的な情報を得られていませんが、本ページのコメントにも参考になる情報をご投稿いただいているので、そちらも併せてご参照ください。
12/06/30 facebookページ開設しました。RSS代わりにも使いたいと思います。
コメント
- 零 さん 2013年01月13日19時25分
質問度々失礼します。 「XAMPP」をインストール後に、 本ページを参考にしながら、 「PostgreSQL」をインストールしました。 「動作確認してみる」の項目にて、 <?php $conn = pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=自身の設定したパスワード"); if (!$conn) { die('接続できませんでした'); } echo '接続に成功しました'; ?> を入力した「index.php」ファイルを入れる箇所ですが、 「Document Rootの最上位ディレクトリに」と記載されてありますが、 この場合、C:\xampp\htdocs内という認識で宜しいのでしょうか。 実際に上記の「index.php」ファイルをC:\xampp\htdocs内に入れ、 動作確認を行ったところ、 Call to undefined function pg_connect() との表示になった為、 「エクステンションディレクトリを登録しておく」ページを参考にし、 「php.ini」内の extension_dir = "./" を ;extension_dir = "./" extension_dir = "C:/xampp/php/ext" に、また本ページの最下部を参考にし、 ;extension=php_pgsql.dll を extension=php_pgsql.dll 書き換え、Apacheを再起動後に、 再度確認致しましたが、 Call to undefined function pg_connect() の画面が表示されてしまいました。 手順としては上記で問題ありませんでしょうか。 よろしくお願いします。
- 馬場誠 さん 2013年01月14日16時01分
DocumentRootの認識はおしゃるとおりです。 手順としても問題無さそうに思います。 もしかすると、PHP5.2.6以降の仕様(と言っていいのか分かりませんが)のせいかもしれません。本ページに追記しましたので、そちらを参考になさってください。
- 零 さん 2013年01月15日19時52分
「本ページの追記」通りの手順で 動作確認、成功しました^^ ちなみに自身がインスールしていた 「php_pgsql.dll」のファイルサイズを確認したところ、 89KBでした。 ありがとうございました^^
- 馬場誠 さん 2013年01月16日18時56分
動作してよかったです。 コメントいただかなければ、本件に気付かず追記できなかったと思います。 こちらこそありがとうございました!
- hiro さん 2014年07月27日04時28分
この度、久しぶりに開発環境を作る際に大変お世話になりました。 いくつか説明通りにはいかなかったのでご報告しときます。 環境 OS:Windows7 home x64 apache:2.2.5 x86版 php:5.2.5 x86版 postgresql:9.3.5 x64版 手順 apache>php>postgresql 当初64ビットに揃えた方がいいと思ったのですが、見当たらなかったのと、32ビットでも入れている人がいる事から、32ビットになってたりします。 で、問題の個所なんですが、postgresqlインストール後、案の定「Call to undefined function pg_connect()」が表示されました。 管理者様の追記等全て行ったのですが、現象は変わりませんでした。 そこで、更に調べると、そもそもphpinfo()に「pgsql」欄が表示されていないという内容を見つけました。 また、同時に、「PHP5.2.6以降」の「php_pgsql.dll」は壊れてるから古いのと差し替えて動いたという内容も多く見つけました。 そこで、当初PHPのVerは「5.4.31」だったのですが、このVerは案の定「php_pgsql.dll」のサイズが小さい。そこで、「PHP5.2.5」の160↑kbのファイルを探し、差し替えたのですが、現象は変わらず。 変更前は覚えてないのですが、変更後は、phpinfo()にもpgsqlは表示されていませんでした。 かなりはまってた事もあり、最新Verに拘らず「php_pgsql.dll」は正しいはずと信じ、PHP全てのファイルを「php:5.2.5」に変更した所、あっさり正常に動きました。 上記から、しっかりと検証したわけではないのですが、下記内容が考えられるのかと思いました。 ・「PHP5.2.6以降」のPHPをインストールする場合、「php_pgsql.dll」は、やはり壊れてる?ので、「PHP5.2.5以前」のファイルと差し替える必要がある可能性 ・「PHP5.2.6以降」でかつ、「PHP5.2.5以前」の「php_pgsql.dll」を差し替えたとしても、ファイルが正常に動くVerと動かないVerがある可能性 ApacheやPHP等、要件や相性など、Webの情報を鵜呑みにしインストールしてしまっているので、 参考にならないかもしれませんが、ここのサイト程、丁寧に書かれているサイトが見つからなかった事もあり、何かの参考になればと思い書き込みさせて頂きました。 最後に大変長文失礼致しました。また、大変参考になり助かりました。 ありがとうございました。
- 馬場誠 さん 2014年07月27日14時00分
hiroさん、こんにちは。 詳しいご説明、ありがとうございます。 当記事を当初執筆した際はXP 32bitで動作チェックをしたため古くなってきているので、情報、非常にありがたいです。 今の環境でどうなっていたか改めて確認してみたところ、 Windows7 Pro 64bit Apache2.2.25 PHP5.4.25 PostgreSQL8.4 の環境で、元々のphp_pgsql.dll(93KB)で問題無く稼働しているPCがありました。 私もphp_pgsql.dllが壊れているとう情報は多数確認しており、実際デフォルトのphp_pgsql.dllで動かなかったときに、他からを持ってきたもので動作したという例も経験済みです。 というわけで、どのあたりに問題があるのか、正直なところいまいちよく分からずにいました。 ですので今回hiroさんからいただいた情報も、興味深かったです。 試行錯誤されている方にも、役立つ情報だと思いましたので、本ページ内からコメント欄にもリンクさせていただきました。 貴重な情報、ありがとうございます!
- はやし さん 2015年03月31日09時03分
こんにちは。 質問させてください。 postgresSQLをインストールしたのですが 私のPCが不調なせいかインストール中に「応答していません」と表示され かたまってしまったため、キャンセルをしてしまいました。 そこで再インストールしようとしたところ、ファイル参照のところが「C:¥〜」というような 文字が消えて空欄になっており、NEXTボタンで進めなくなってしまいました。 これはすでにインストールされているということでしょうか? お手数ですがご回答いただけますと幸いです。泣 よろしくお願い致します。
- 馬場誠 さん 2015年03月31日10時02分
はやしさん、こんにちは。 インストール先のパスを選ぶ画面で、NEXTで進めない……ということですね。 パスが指定されていないためにNEXTが押せない状態と思いますので、「フォルダ」のアイコンクリックからパスを指定すれば、押せるようにならないでしょうか。
> これはすでにインストールされているということでしょうか?
どの時点でクラッシュしたのかわからないので確実なことは言えませんが、Windowsでしたらコントロールパネル内の「プログラムと機能」にPostgreSQLがあるかで、インストールされているかの目安になると思います。 気になるようでしたら&それがつい昨日今日のことでしたら、システムの復元で戻す手もあります。 もしまだインストールされていないような感じであれば、最初の通り、パスを適当に指定してインストールしてみてください。- はやし さん 2015年03月31日16時48分
ご丁寧にご回答ありがとうございます(;ω;) パスの指定は、どこを指定すればいいでしょうか??
- 馬場誠 さん 2015年04月01日08時03分
ご自身でインストールしたい場所で大丈夫ですが、他のプログラムがインストールされているフォルダに入れるのが一般的です。 Windowsでよいのですよね!? OSのバージョンにもよりますが、下記が一般的です。 (PostgreSQLのバージョンは9.4と仮定します。他のバージョンを入れる場合は、フォルダの9.4の部分は適宜変えてください) ■64bit版のPostgreSQLをインストールする場合 C:\Program Files\PostgreSQL\9.4 ■32bit版のPostgreSQLをインストールする場合 C:\Program Files (x86)\PostgreSQL\9.4 ※↑CドライブにProgram Files (x86)というフォルダが無い時は、 C:\Program Files\PostgreSQL\9.4 でOKです。
↓もし参考になりましたら、シェアしていただけると嬉しいです(^-^)