XAMPPのPHPでWindowsのPostgereSQLを使う。

XAMPPでPostgreSQLを使えるようにしてみる

このページを参考にさせていただきました。
要するにWindows版をダウンロードして使う。

コミュニティページ

https://www.postgresql.org/download/windows/

インストーラのダウンロード

インストーラを起動するときは必ず「管理者として実行」しましょう。

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows

今回は訳あって9.4.24をインストールしています。

以下、インストール時の変更点

・データベースのデータ保存先を「C:\pgdata\」にしました。
・「advanced Options」でデータベース・クラスタのロケールを「Default locale」→「C」に変更

そのまま普通にインストールしていけばpgadminIIIもインストールされた。

XAMMP側の設定

php.iniの各所を変更。

以下2行のコメントアウトを外した。

extension=php_pgsql
extension=php_pdo_pgsql.dll

XAMPPのコントロールパネルから「services」をクリックします。

すると、「postgresql-x64-9.4」が起動しています。

Windows側の設定

このままでは接続できていないのでWindowsの環境変数のPATHを設定します。

「システムのプロパティ」を開きます。
「環境変数」をクリックしましょう。

下記の部分を編集します。

このような画面になります。

「新規」からインストール先のパスを追加します。
この辺はインストールしたバージョンによって違いますのでご注意を。

ついでにXAMPPで使う予定ですのでXAMPPのパスも追加しておきます。

これでコマンドプロンプトからPostgreSQLが動いているか確認します。

psql --version

と入力してみましょう。
バージョンが表示されれば成功です。

更にログインしてみます。スーパーユーザーの名前は「postgres」です。
自分で設定したパスワードを入れてみましょう。
パスワード入力中に反応はありませんがきちんと入力されていますので入力後エンターを押してください。

ログインできました!

phpPgAdminが欲しい。

これだけではまだ使いにくいのでphpPgAdminをインストールしておきます。
インストール自体が面倒ですが仕方有りません。

本家サイトからZIP版をダウンロードしてきます。
その後、C:\xampp\htdocs\ に解凍して「phppgadmin」というディレクトリ名に変更しました。

このままアクセスしても

Configuration error: Copy conf/config.inc.php-dist to conf/config.inc.php and edit appropriately.

とエラーが出てしまうので設定をします。

上記、

extension=php_pgsql
extension=php_pdo_pgsql.dll

のコメントアウトが終わっている前提で進めます。

エラーに言われたとおり
「conf/config.inc.php-dist」 を 「conf/config.inc.php」
にコピーします。

config.inc.phpを開いて

$conf['extra_login_security'] = true;
↓
$conf['extra_login_security'] = false;

にしておかないとスーパーユーザー「postgres」でログインできないようですので設定しておきます。

またそのまま接続してみると、

</p>
<p>Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Misc has a deprecated constructor in C:\xampp\htdocs\phppgadmin\classes\Misc.php on line 8</p>
<p>

とエラーが出ます。
PHPのバージョンが7.2.11のせいでしょうか?

非推奨コンストラクターがありますとのことなのでコードを書き直すしかないか・・・

phppgadmin\classes\Misc.phpに

/<em> Constructor </em>/
function Misc() {
}

こんなところがあったので

/<em> Constructor </em>/
function __construct() {
}

としました。

無事、ひとまず画面は表示されました。

ですがまたエラー。

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; ArrayRecordSet has a deprecated constructor in C:\xampp\htdocs\phppgadmin\classes\ArrayRecordSet.php on line 8

phppgadmin\classes\ArrayRecordSet.phpを直しますか。

function ArrayRecordSet($data) {
$this->_array = $data;
$this->_count = count($this->_array);
$this->fields = reset($this->_array);
if ($this->fields === false) $this->EOF = true;
}

この部分を

function __construct($data) {
$this->_array = $data;
$this->_count = count($this->_array);
$this->fields = reset($this->_array);
if ($this->fields === false) $this->EOF = true;
}

このようにしました。

エラーは出なくなりました。

バージョンによって違うかもしれませんがこれをクリックすることによってログイン画面が出ます。

早速スーパーユーザーでログインしてみます。

ログインできましたが
古いバージョンはインストールするもんじゃないですね・・・。
PHPをバージョンアップさせるタイミングで直せばいいんですが
エラーだらけで気分が悪いので時間があるときに一つづつ直していきます。

PHPから接続できるかチェックです。
ポートは5432でEC CUBEをPostgreSQLを使ってインストールしてみます。

無事にXAMPP + PostgreSQLでEC CUBEがインストールできました。

PHP, PostgleSQL

Posted by bistro