[PHP-users 10056] Re: PHPからのDBリモートアクセス

Amemiya php-users@php.gr.jp
Thu, 12 Sep 2002 17:14:53 +0900


雨宮です。

自分で調査した結果
tcpdumpで、DBサーバへのアクセスを見てたんですが
マシンA(コネクトできないマシン)からのアクセスと
マシンC(コネクトできる)からのアクセスでは
tcpdumpの結果が違う事が分かりました。

正常なアクセス時のtcpdump結果
16:28:54.571735 マシンC.1091 > マシンB.5432: S 69142048:1469142048(0) win 5840  (DF)
16:28:54.571887 マシンB.5432 > マシンC.1091: S 1815104372:1815104372(0) ack 1469142049 win 32120  (DF)
16:28:54.572256 マシンC.1091 > brabo.5432: . ack 1 win 5840  (DF)
16:28:54.572749 マシンC.1091 > マシンB.5432: P 1:297(296) ack 1 win 5840  (DF)
16:28:54.572855 マシンB.5432 > マシンC.1091: . ack 297 win 31856  (DF)
16:28:54.575824 マシンB.5432 > マシンC.1091: P 1:6(5) ack 297 win 31856  (DF)
16:28:54.576124 マシンC.1091 > マシンC.5432: . ack 6 win 5840  (DF)
16:28:54.616139 マシンB.5432 > マシンC.1091: P 6:16(10) ack 297 win 31856  (DF)


アクセスが出来ないマシンからのtcpdump結果

16:26:28.400118 マシンA.49334 > マシンB.5432: S 2276320395:2276320395(0) win 32768  (DF)
16:26:28.400281 マシンB.5432 > マシンA.49334: S 1644241049:1644241049(0) ack 2276320396 win 32120  (DF)
16:26:28.401925 マシンA.49334 > brabo.5432: F 1:1(0) ack 1 win 32768 (DF)
16:26:28.402085 マシンB.5432 > マシンA.49334: . ack 2 win 32120 (DF)
16:26:28.402471 マシンB.5432 > マシンA.49334: F 1:1(0) ack 2 win 32120 (DF)
16:26:28.402855 マシンA.49334 > brabo.5432: . ack 2 win 32768 (DF)


最初のコネクションの時点で既にマシンAからのアクセスの場合は
情報が足りていないのです。「sackOK」や「[|tcp]」等

PHPのconfigure時の設定などで、足りないものや
コンパイルが不十分な為、PHPのモジュールが足りていないのでしょうか?
以下にPHP及び、postgresのconfigureオプションを記述しておきます。
どなたか、有識者の方是非御教授をお願いします。

postgres configureオプション
#./configure --with-out=CXX

PHP configureオプション
#./configure --enable-sigchild --libdir=/usr/lib/php 
 --includedir=/usr/include --with-pgsql=/usr/local/pgsql
 --with-nsapi=/usr/netscape/server4 --disable-debug 
 --without-gd --enable-debugger --enable-magic-quotes 
 --enable-track-vars

> 
> 【使用マシン】
> マシンA
> OS:HP-UX11.00
> DB:Postgres7.0.2(PHPインストール用で使用はしていません)
> PHP:PHP4.2.2
> 
> マシンB
> OS:TruboLinux6.5J
> DB:postgres7.0.2
> PHP:PHP3.0.18-i18n-ja-2
> 
> マシンC
> OS:TurboLinux7
> DB:postgres7.1.2
> PHP:PHP4.0.6
> 
> 【環境】
> 三つのマシンとも、私がroot権限で自由に使用できます。
> また、ネットワーク的も同一セグメント上にあり
> FireWall等のセキュリティは一切してません。
> 
> それぞれのマシンで、hosts.allowやipchainsなどで
> アクセス制限も掛けていませんし、pg_hda.confでも
> そのセグメントは全て、アクセス可能の設定を行っています。
> 
> pg_hba.confの設定です。
> host         all         192.168.20.0  255.255.255.0   trust
> 
> この状況で下記のマシンAからマシンBにPHPでアクセスした場合に
> 下記の様なエラーがブラウザに表示されます。
> 
> Warning: pg_connect() unable to connect to PostgreSQL server:
> connectDBStart() -- connect() failed: Invalid argument Is the
> postmaster running (with -i) at 'dust' and accepting connections
> on TCP/IP port '5432'? in /public/htdocs/phptest.php on line 21
> It failed to the implementation
> 
> 
> このエラー内容では、postmasterが"-i"オプションで
> 動作していないと、言っている様ですが
> マシンCからマシンBへアクセスする際は、エラーが表示されず
> コネクトの値が表示されます。
> 
> エラーメッセージを検索したりはしたのですが、
> 検索エンジンなどでは、発見できなかったので
> 皆様にご協力を仰ぎたいと思っております。
> 
> また、たりない情報や不適切な発言等ありましたら
> 言っていただければ、出来うる限り改善します。
> 
> ご迷惑を掛けてすいません。


---------------------------
雨宮 薫
Amemiya kaoru

e-mail:k_all@infoseek.jp

------------------------------------------------------------------------
★秋風が心地よいこの季節 “住み替え”の季節です! by infoseek
 http://house.www.infoseek.co.jp/House/top?sv=RF&svx=971148