オリジナルショップの立ち上げ、WEBシステム構築、サイト作成…

M

morrighan.biz

PostgreSQL LOGO

postgresのextension not found

2015/07/17

この記事のマトメ

postgresを利用してテスト環境を構築することになった時のお話です。

バックアップやリストが簡単なこともあって、1から構築を依頼された時はmysqlをオススメしていますが、既に構築済のお客様の中にはpostgresという場合も多々あります。お客様にテスト環境をご用意いただけない事もあるので、LAMPのテストサーバーにpostgresのインストールをすることになりました。

そこで罠にハマりました。

今回早急に対応しなければならなかったお客様がなんとEC-CUBE2.4!私は動いている2.4を初めてみたのですが、相方さんはそうでもないらしく、「懐かしいー!!!」と大ハシャギしていました。

動いているものが古くてもやることは変わらないです。
本番サーバーからソースを取得してテスト環境に反映!DBからdumpしてsqlファイルも取得!!

私達のテスト環境は模範的LAMP環境でpostgresが入っていななかったので、インストールと初期設定。

下記サイトを参考にしました。
CentOS 6 – PostgreSQL – インストール : Server World

お客様の本番環境と同じIDとパスワードを作成し、同じ名称のデータベースを作成。権限も同じ状態にし、いざ表示!!!

 

真っ白!!!

 

えー・・・・、DBのユーザー名もあってる・・・
パスワードもデータベース名もあってる・・・
ホストもあってる・・・
ターミナルからの「psql -h 127.0.0.1 -U username -d データベース名」で接続できてる・・・
(この時、「ident認証に失敗しました」が出る問題にぶち当たったのですが、今回とは別なのでまた別の記事にします!)

エラーログを見ると…

PHP Fatal error:  Call to undefined method DB_Error::getCol() in /xxx/xxx/data/class/SC_DbConn.php on line 139

この139行目は、こんな内容です。

$result = $this->conn->getCol($n, $col);

つまり、この「$this->conn」のオブジェクトにgetCol関数がないよと言っているようです。

$this->connをvar_dumpしてみるとことにしました。
すると…

DB Error: extension not found

なるerrorが出ていました。「エクステンションがない」と言っています。

。。。はっ!!!そうですよね!!!

PHPからpostgresに接続する時には、extensionがないとダメでした。

そうでしたそうでした。<(‘-‘;)

ここまで分かれば早いですね!

1. yumでさくっとPHPのpostgres接続のためのモジュールをインストール

yum install php-pgsql

2.モジュールファイルの場所をチェック

/usr/lib/php/modules/pgsql.soだったり、/usr/lib64/php/modules/pgsql.soだったり。
バージョンや環境によって若干違いますがfindするとさくっと見つかります。

find / -name pgsql.so

3.php.iniに設定する

php.iniにextensionを設定します。

vi /etc/php.ini

extension_dir=”/usr/lib64/php/modules”
extension=pgsql.so

extension_dirがすでに設定されている時は、手順2で探したsoファイルを、記載済のextension_dirにコピーするといいです。

4.Apacheの再起動

再起動したらphp.iniも反映されるはずですね!

service httpd restart

ドキドキしながら再度アクセスしてみると…ちゃんと表示されていました!よかったー。

これまでmysqlのみだったのにpostgresが必要になった時に、extensionは忘れがちです。
ログイン情報があってるのに、という場合は、サーバー環境もチェックしてみましょう!

タグ

のえらのえら

元夜の蝶。現在は家事や子育ての合間にテストとライティング、そして当サイトの管理をしています。テストで至る所をポチポチしまくる自称ポチポチマスター。クライアント様と接することが殆ど無いレアキャラです。最近の悩みは、寝ている間も指がポチポチ動いている為に腱鞘炎が治らない事です。日々の作業で感じた事や気づいた事、テスター視点でのネットショップに関する記事を書いています。

Newly Post

ARCHIVES

CONTACT ME!!

『ショップのことをちょっと雑談』という感じで、お気軽にお問い合わせ・ご相談をお送りください。

お仕事ステータス

お仕事お待ちしております。

EC-CUBE3に独自プラグインを追加してパワーアップしませんか?お気軽にご相談ください♪