バージョン選択

フォーラム

メニュー

オンライン状況

55 人のユーザが現在オンラインです。 (41 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 55
もっと...

サイト内検索

質問 > その他 > PostgreSQLでUNIXドメインソケット接続での使用は可能か

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 2007/2/4 12:00
対応状況: −−−
PostgreSQLでUNIXドメインソケット接続での使用は可能か
はじめまして。EC-CUBEをPostgreSQL7.4.6がインストールされているレンタルサーバで使用したいと思い、インストーラーを進めていったのですが、以下のエラーが表示されて先に進めません。

>> DB Error: connect failed
[nativecode=Unable to connect to PostgreSQL server: could not connect to server:
Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432?]

DBやユーザは作成していますが、どうも使用しているレンタルサーバではPostgreSQLのTCP/IP経由接続は許可しておらず、UNIXドメインソケット接続のみ許可しています。このような状況でインストールする方法がありましたらお願いいたします。
nanasess
投稿日時: 2007/2/4 17:10
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2303
Re: PostgreSQLでUNIXドメインソケット接続での使用は可能か
大河内です。

インストール時に DBホストを 127.0.0.1 ではなく localhost を指定してもインストールできませんでしょうか?
ゲスト
投稿日時: 2007/2/4 20:34
対応状況: −−−
Re: PostgreSQLでUNIXドメインソケット接続での使用は可能か
大河内様

>インストール時に DBホストを 127.0.0.1 ではなく localhost を指定してもインストールできませんでしょうか?

localhostに変更しても同様のエラーメッセージが表示されました。また、dbサーバの項目を空白にしてみましたが、「※ DBサーバが入力されていません。」と表示されてインストールの先に進めません。

回避方法がありましたらご教授お願いいたします。


※利用しているレンタルサーバのMySQLのバージョンが4.0なため、PostgreSQLで利用可能になれば助かります。
ゲスト
投稿日時: 2007/2/4 21:01
対応状況: −−−
Re: PostgreSQLでUNIXドメインソケット接続での使用は可能か
追記です。

DBサーバ名に「unix()」と入力すると、従来とは違うエラーメッセージが表示されました。

>> DB Error: connect failed
[nativecode=Unable to connect to PostgreSQL server: FATAL: database ":/データベース名" does not exist]


DBサーバ名に「ユーザ名:パスワード@unix()/データベース名」と入力すると以下のメッセージが表示されました。
>> DB Error: connect failed
[nativecode=Unable to connect to PostgreSQL server: FATAL: Password authentication failed for user "ユーザ名"]

ここまでで行き詰まっています。
nanasess
投稿日時: 2007/2/4 22:05
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2303
Re: PostgreSQLでUNIXドメインソケット接続での使用は可能か
大河内です。

よくよく考えてみれば、PostgreSQL7.x と PHP を連携させる場合は、postgresql.conf で tcpip_socket = true にする必要があり、これが不可能なのであれば、EC-CUBE はおろか、その他の PHPプログラムとの連携も不可能なはずです。

引用:

DBやユーザは作成していますが、どうも使用しているレンタルサーバではPostgreSQLのTCP/IP経由接続は許可しておらず、UNIXドメインソケット接続のみ許可しています。このような状況でインストールする方法がありましたらお願いいたします。


とのことですので、 tcpip_socket = false の状態のようです。
この状況では、PostgreSQL と PHP の連携は、どうやっても不可能です。レンタルサーバー業者に、どのような設定で連携が可能かよく確認すると良いと思います。

また、PostgreSQL と PHP の連携が可能であれば、簡単で良いので接続が成功する PHP スクリプトをご投稿ください。
それを元に、EC-CUBE のインストールが行えるようにソースを修正することはできると思います。
ゲスト
投稿日時: 2007/2/4 22:56
対応状況: −−−
Re: PostgreSQLでUNIXドメインソケット接続での使用は可能か
大河内様

素早い御回答ありがとうございます。単純ですが、接続チェック用に利用しておりますPHPスクリプトを投稿します。

ここから-------------------------
<META http-equiv="Content-Type" content="text/plane; charset=EUC-JP">
<?php
// PostgreSQL connect
$conn = pg_connect("dbname=データベース名 user=データベースユーザ名 password=パスワード");

if(!$conn){
die ("PostgreSQL connect FALSE!\n");
}
else{
echo "PostgreSQL connect OK!\n";
}
@pg_close($conn);
?>
ここまで-------------------------

このスクリプトを実行すると、
"PostgreSQL connect OK!"
と表示されます。

なお、"host=localhost"を指定しますと、

Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Is the server running on host "localhost" and accepting TCP/IP connections on port 5432? in "ディレクトリ名"/test.php on line 4
PostgreSQL connect FALSE!

とのエラーが表示されます。

またphpPgadminがレンタルサーバで準備されていましたので、動作確認を行いました。テーブルの新規作成とINSERTは可能でした。
nanasess
投稿日時: 2007/2/5 0:21
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2303
Re: PostgreSQLでUNIXドメインソケット接続での使用は可能か
大河内です。

どうやら僕の認識違いのようです。。
pg_connect で host を省略すると 接続できるようですね。。

EC-CUBE では、 DB接続に Pear DB を使用していますので、Pear のマニュアルやらソースを眺めてみました。

http://pear.php.net/manual/ja/package.database.db.intro-dsn.php

上記マニュアルを見ると、下記構文の DSN が使用できそうです。

phptype(syntax)://user:pass@protocol(proto_opts)/database

しかし、現在の EC-CUBE では、上記構文が使用できず、いくつか修正が必要です。

1. html/install/index.php 215行目の $dsn に代入される書式を上記 DSN に変更。
2. data/conf/core.php 22行目の DEFAULT_DSN の定数値を上記 DSN に変更。

これで動作すると思いますが未検証です。
はずしていたらすみません。
DSN をハードコーディングしてしまうのも有りだと思います。
ハードコーディングした場合、インストール時に入力する DB設定の項目は無視されるので、適当な値を入れておけば良いと思います
ゲスト
投稿日時: 2007/2/5 13:56
対応状況: −−−
Re: PostgreSQLでUNIXドメインソケット接続での使用は可能か
大河内様

上記の内容に沿っていくつか書き換えました。


html/install/index.php
87,180,480,687行の

$dsn = $arrRet['db_type']."://".$arrRet['db_user'].":".$arrRet['db_password']."@".$arrRet['db_server'].":".$arrRet['db_port']."/".$arrRet['db_name'];
を、
$dsn = $arrRet['db_type']."://".$arrRet['db_user'].":".$arrRet['db_password']."@". "unix()"."/".$arrRet['db_name'];
に書き換えました。

また
data/conf/core.php
21行付近の
define ("DEFAULT_DSN", DB_TYPE . "://" . DB_USER . ":" . DB_PASSWORD . "@" . DB_SERVER . ":" .DB_PORT . "/" . DB_NAME);

define ("DEFAULT_DSN", DB_TYPE . "://" . DB_USER . ":" . DB_PASSWORD . "@" . "unix()" . "/" . DB_NAME);
に書き換えると途中、DB.phpにてエラーが起きますが、インストールが完了しました。

とりあえずショップの表示と管理画面が動作しておりますのでこれで確認を進めていきます。

解決までの道筋についてご教授頂き有難うございました。

※他には、インストーラーのサーバ名に''を入れた後、install.incを書き換えるという方法があるようです。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,287名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.