- 締切済み
PHPで作成したプログラムをレンタルサーバ上に置き、同じサーバ上にある
PHPで作成したプログラムをレンタルサーバ上に置き、同じサーバ上にあるMySQLからデータを取り出して表示するプログラムを作成しています。 今回、それとは別に社内LAN上にMySQLサーバがあり、レンタルサーバ上のPHPから社内LAN上のMySQLサーバにアクセスしたいと思い、次のようにプログラムしました。 $CON = mysql_connect('localhost', "ユーザ名", "パスワード"); mysql_select_db("データベース名"); $SQL = "SELECT * FROM tablename"; $RST = mysql_query($SQL); $DMAX = mysql_num_rows($RST); mysql_free_result($RST); $CON = mysql_close($CON); しかし、「データベースに接続出来ませんでした」と表示されてしまいます。 社内LANのMySQLサーバ上にPHPプログラムを置いたときはこれでアクセスできるので、レンタルサーバからは[localhost]ではまずいのかなとは思うのですが、どうしたらいいのか見当がつきません。 そのMySQLサーバのあるパソコンのLAN上での名前は分かっていますが、ネットワークの知識に乏しいもので・・・ どなたかヒントだけでもお願いできないでしょうか。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
やり方は2つ 一つはレンタルサーバーから社内にファイアウォールにあけた穴をとおって接続し、 odbcなどでデータを得る。 もう一つは、社内に社外からアクセスできるhttpサーバーを用意し そいつをキックしてMySQLへアクセスした結果をテキストデータとして レンタルサーバーでパースして処理する。 正直前者は問題外だと思います。後者は効率よくありません。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 >この回答を頂いてから気づいたのですが、社外から社内サーバにアクセスすることは考えていません。 >あくまで社内のパソコンからアクセスする場合のみ接続出来ればいいのです。 社内のPCから接続するのはレンタルサーバ上のPHPですが、その実行されたPHPが参照しようとしているので結果的には外部からの接続になります。 社内のサーバ端末→レンタルサーバ(実行PHPが社内端末へDB接続を発行) >何がやりたいかというと、レンタルサーバ上にある公開されているスタッフのデータと、社内LANにあるスタッフのプライベートデータを1つの画面で表示させたいのです。 ということですので、実現しようとした場合外部からの接続を許す。 または 社内サーバに実行環境を置いて、外部のデータベースサーバに接続する。 (今度は外からWebが見れなくなりますが社内からのみというならそれでも運用できそう) ただし外部のレンタルサーバにDBを置く必要も無くなってしまいます。
お礼
>社内のPCから接続するのはレンタルサーバ上のPHPですが、その実行されたPHPが参照しようとしているので結果的には外部からの接続になります。 そういうことなんですね。繋がらない原因がやっと理解できました。 >ということですので、実現しようとした場合外部からの接続を許す。 >または >社内サーバに実行環境を置いて、外部のデータベースサーバに接続する。 >(今度は外からWebが見れなくなりますが社内からのみというならそれでも運用できそう) きちんとしたセキュリティができるまでの技術を持っていないので、個人情報のデータがある社内LANのサーバの外部接続は考えていません。 となると、やはり社内LANのデータベースのアクセスはそこで完結するプログラムを書いた方が良いのでしょうね。 勉強になりました。ありがとうございます。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 その社内にあるサーバですが外部から接続できますか? 一般的に会社のネットワークにぶら下がるPCには外部からの接続は出来ないと思います。 (外部に開放してある端末は別ですが) インターネット上から端末を特定するにはグローバルIPアドレスが必要となります。 外部に向けてあるのであればlocalhostの部分をIPアドレスにするかドメインが取得されていればドメインで指定できると思います。 まずは外部からの接続が出来るかどうかです。
補足
回答ありがとうございます。 社内サーバは外部から接続出来るようにはなっていません。 この回答を頂いてから気づいたのですが、社外から社内サーバにアクセスすることは考えていません。 あくまで社内のパソコンからアクセスする場合のみ接続出来ればいいのです。 何がやりたいかというと、レンタルサーバ上にある公開されているスタッフのデータと、社内LANにあるスタッフのプライベートデータを1つの画面で表示させたいのです。
- memphis
- ベストアンサー率40% (975/2395)
社外からmysqlにアクセスできるようにルータ、ファイアーウォールの設定はしていますか? それが出来ていれば、その情報をPHPに設定すればいいです。
お礼
仰るとおり社内のサーバは守らねばならないので、前者は考えられません。 後者は……ごめんなさい。理解できる知識がありません。 勉強してきます。