質問 > その他 > 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 居住地: 投稿: 2325 |
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 居住地: 投稿: 2325 |
Re: PostgreSQLでUNIXドメインソケット接続での使用は可能か 大河内です。
よくよく考えてみれば、PostgreSQL7.x と PHP を連携させる場合は、postgresql.conf で tcpip_socket = true にする必要があり、これが不可能なのであれば、EC-CUBE はおろか、その他の PHPプログラムとの連携も不可能なはずです。 引用:
とのことですので、 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 居住地: 投稿: 2325 |
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を書き換えるという方法があるようです。 |
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |