バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

先着1,000社 プラグインダウンロード&お申込で1,000円分Amazonギフト券プレゼント amazon pay
広告掲載について

サイト内検索

質問 > その他 > 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
居住地: 宝塚
投稿: 1735
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
居住地: 宝塚
投稿: 1735
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
居住地: 宝塚
投稿: 1735
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ペイメント

統計情報

総メンバー数は27,139名です
総投稿数は86,366件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1735
4
yuh
1497
5
red
1161
6
umebius
1007
7
468
1004
8
fukap
907
9
shutta
827
10
tsuji
815
11 ramrun 789
12
tao_s
651
13 karin 647
14 sumida 641
15
homan
633
16 DELIGHT 571
17
h_tanaka
504
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.