<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>PHP-users ML</title><link>http://ml.php.gr.jp/pipermail/php-users/</link><description>PHP-users ML</description><language>ja</language><item><author>r_g_b_a_w ＠ yahoo.co.jp</author><pubDate>Tue, 24 Nov 2009 18:44:57 +0900</pubDate><title>[PHP-users 34849] PHP 開発ツールについて</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035366.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>ムラカミと申します。

現在、PHPを使ったWebアプリ(Webサイト)の開発ツールを探しています。

PHPの開発ツール自体いろいろあると思うのですが、下記要件に見合ったツールが
なかなか見つからず、
皆様からご意見をいただければと思い、投稿させていただきました。

ほしい機能
１．IIS or Apache＋PHP＋SQL Server(mssql)の開発支援
２．デザインテンプレート
３．DBと連携したログインページの作成支援

手元に昔使用していたDREAMWEAVER8があるのですが、残念なことにSQL Serverが
未対応のようです。
これのSQL Server対応版のようなものがあればベストなのですが．．．

有償無償問いません。Windows Xp環境で動作するものを希望します。

よろしくお願い致します。


--------------------------------------
What is your No.1 Entertainment of 2009? -Yahoo! JAPAN Net BANZUKE 2009
<A HREF="http://pr.mail.yahoo.co.jp/banzuke/">http://pr.mail.yahoo.co.jp/banzuke/</A>
</PRE>


]]></description></item><item><author>email</author><pubDate>Wed, 18 Nov 2009 20:19:55 +0900</pubDate><title>[PHP-users 34848] Re: ログイン情報の保存について</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035365.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>山下です。
ご返答遅くなりました。
エンドユーザから、「この問題は運用サイドで吸収する」という
はっきりした返答がありました。
当サイトのシステムを統括するPMから、そのような連絡があり
このMLでお尋ねしました件は、ひとまず解決ではありませんが
表向きは（？）終結です。




----- Original Message ----- 
送信者: おさ&lt;<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">osa ＠ osa-p.net</A>&gt;
宛先: <A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">php-users ＠ php.gr.jp</A>
日付:Thursday, October, 08, 2009, 10:33 PM
件名: [PHP-users 34790] Re:ログイン情報の保存について

&gt;<i> 
</I>&gt;<i> 
</I>&gt;<i> こんばんは、おさです。
</I>&gt;<i> 
</I>&gt;<i> 銀行のサイトのソースを見てみたら、
</I>&gt;<i> inputタグに autocomplete=&quot;off&quot; 属性が指定されていましたが、
</I>&gt;<i> これでは駄目なんでしょうか？
</I>&gt;<i> 
</I>&gt;<i> chromeで三菱東京UFJ銀行のサイトにログインしてみましたが、
</I>&gt;<i> IDやパスワードは保存されませんでしたよ。
</I>&gt;<i> 
</I>&gt;<i> +-----------------------------------------------------------------------+
</I>&gt;<i>  HANDLE:おさ
</I>&gt;<i>  EMAIL :<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">osa ＠ osa-p.net</A> twitter:osapon URL:<A HREF="http://www.osa-p.net/">http://www.osa-p.net/</A>
</I>&gt;<i> +-----------------------------------------------------------------------+
</I>&gt;<i> _______________________________________________
</I>&gt;<i> PHP-users mailing list  <A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">PHP-users ＠ php.gr.jp</A>
</I>&gt;<i> <A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">http://ml.php.gr.jp/mailman/listinfo/php-users</A>
</I>&gt;<i> PHP初心者のためのページ - 質問する前にはこちらをお読みください
</I>&gt;<i> <A HREF="http://oldwww.php.gr.jp/php/novice.php3">http://oldwww.php.gr.jp/php/novice.php3</A>
</I>&gt;<i> 
</I></PRE>



]]></description></item><item><author>あきら</author><pubDate>Wed, 18 Nov 2009 09:29:56 +0900</pubDate><title>[PHP-users 34847] Re: PHPの実装方法について</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035364.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>あきらです

&gt;<i> また、実際には複数人、開発から時間が経過すると前提となるルールが機能しないケースがあり、
</I>&gt;<i> このあたりはどのように対処すべきでしょうか？
</I>
DBAを設置できるのであれば、すべてVIEWやプロシージャーで処理する
こともあると思います。

とはいえ、私はプロトタイプを一度作って分割範囲を決めてから
すべて捨てて組みなおしますね

システムの規模と今後の拡張性次第ですので、どれぐらいの規模のユーザーで
どれぐらい増えていって、サーバーは何台ぐらいどのように使えるかって
前提がないとなかなか難しいと思いますよ

あと開発者の人数と想定スキルによってもかなり違いますよね

そこそこの技術者を大量に使って平均化するJava系に多い開発と
高レベルエンジニアで少人数で作るパターンではかなり違うと思います

あきら
</PRE>


]]></description></item><item><author>aug721 ＠ gmail.com</author><pubDate>Tue, 17 Nov 2009 11:45:32 +0900</pubDate><title>[PHP-users 34846] Re: PHPの実装方法について</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035363.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>オカムラです。

アドバイスありがとうございます。

MVCに当てはめて考えた場合、下記のように分割されます。
M = 「データクラス」「処理クラス」に分割
V = Smarty
C = 「実行ファイル」→ただし現状では1URL、1ファイルになっています。

自分が悩んでいた事がモデルの実装をどうするかという事が皆さんの話からハッキリとしました。

フレームワークという選択肢も仰る通りだと思いますが、仮にCakePHPを使った場合でも
モデルの実装をどうするか？という問題は残りますので、そこの考え方をスッキリとさせたいと思います。

&gt;<i> サービスではなく、データベースのテーブル単位で分けたほうが汎用性、再利用
</I>&gt;<i> 性の面で有効だと思います。
</I>
1データベースにつき1テーブルという意味でしょうか？

&gt;<i> データベースを安定的・継続的に動作させるため、DBへのアクセスには汎用的な
</I>&gt;<i> フレームワークを利用するか、専用APIを用意する（PHPではなくC++やJavaで実
</I>&gt;<i> 装することあり）ことが普通に行われます。アプリケーションとDBの間に1枚か
</I>&gt;<i> ませることで、入出力データの整合性チェック（バリデーションチェック）を行
</I>&gt;<i> うとともに、SQLインジェクションなどの攻撃を防止する役目を持たせます。
</I>
「データクラス」に上記の役割を持たせる予定です。
ただし、現時点ではシステム単位に「データクラス」を持たせる事になります。
理由としては、ファイルの肥大化→システム単位に分割です。
モデルを「データクラス」と「処理クラス」に分ける理由としては、例えばユーザのニックネームを
取得する場合、それぞれのシステムで独自に実装した場合、取得する際の必要な条件
（例えば、有効フラグがONだったら、氏名のフィールドが空欄だったら）が満たされない実装が
存在してしまうと全体のサービスとして不整合が発生してしまうので「データクラス」に書かれた
ニックネーム取得メソッドを各システムから呼ぶという方法を取りたいと考えています。

参考のURLを含めて一通り読ませていただくと、データの取得はそれぞれのモデルでおこない、
逆にロジックを共通化しない（ルール、考え方を共有化する）という風に取れる部分もありますが、
この認識が間違っているでしょうか？
また、実際には複数人、開発から時間が経過すると前提となるルールが機能しないケースがあり、
このあたりはどのように対処すべきでしょうか？

一つのシステムであれば頂いたアドバイスもしっくりくるのですが、複数のシステムをMVC、
疎結合、DRYといったキーワードから考えてみるとうまくまとまらないというのが現状です。

皆さんが考えているものと意識がずれているような気がしていますが、引続きアドバイス
参考情報を頂ければと思います。
</PRE>



]]></description></item><item><author>あきら</author><pubDate>Tue, 17 Nov 2009 11:38:53 +0900</pubDate><title>[PHP-users 34845] Re: PHPの実装方法について</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035362.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>あきらです

&gt;<i> このようなサービスを開発する場合、データベースをどのように分け、PHPでどのように実装するのが理想でしょうか？
</I>
フレームワークとデータベースによってアプローチは変わってくると思います。
また同じフレームワークでもデータベースアクセスの方法が選べたりするので
環境別に検証を行うことをお勧めします。

フレームワークを利用しないでPHPを組むのは単一の小さなプロジェクト以外
ではやめた方がいいです。

&gt;<i> 1.データベースをサービス単位で分割する
</I>
全部一個にいれて、あとで分割できるように設計するのが汎用的だと思います
が絶対に同時に使わないテーブルは同じサーバーでもはじめから別けておいて
もよいと思います。

PostgreSQLとかだとクラスタリングなどであとからサーバーに分配するのも
標準環境ではないですが可能です。

そもそもOracleであれば最初からクラスタリング構成で設計した方がいいかも
しれません。

とはいえ、最近はデータアクセスは階層を分離するので、実際のロジックなど
からは設計を変更しても極力影響を与えないように組むのがよいと思います。

データベースの分割については経験が必要ですので、どのレベルで拡張を行って
いくのかを最初に検証したほうがよいと思います。

コストかけれるのであれば、最初からクラスタリングがいいと思いますし最初は
ユーザーが少ないのであれば分割しなくてもよいのではないでしょうか？
クラスタリングよりはミラーリングの方がよい場合もあると思います。

実際問題オークションってのはかなりヘビーなコンテンツですが。。。

ただしSNSやBlogの連携ってDB経由じゃなくっても、XML経由とかRSS経由とか
SOAP通信とかシステムを分割しておくのもよいかもしれません。

これは各サービスレベルで実装者や設計者が違う場合に、DB経由の場合いろいろ
トラブル起こる場合があるので、責任範囲を別ける意味もあります。

ミラーリングされたDBにアクセスするのであれば問題ありませんが、本番系DB
に直接アクセスする場合には、参照系の外部サービスから重いSQLを投げられる
ことがあり注意が必要です。

Webサーバーの分割方法と、DBサーバーの分割方法も合わせて考えて検証を
するのをお勧めします。
テーブルのレコード分割も必要になるかも検討する必要があります。

また理想よりは、管理できる範囲の中での設計をお勧めします。

あきら
</PRE>





]]></description></item><item><author>papa pahoo</author><pubDate>Tue, 17 Nov 2009 09:50:38 +0900</pubDate><title>[PHP-users 34844] Re: PHPの実装方法について</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035361.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>オカムラさん、こんにちは。パパぱふぅです。

「1.データベースをサービス単位で分割する」については、林さんのご意見と同
じです。
「2.データベースを横断して利用できるデータベースユーザを作成する」につい
て、少しだけアドバイスを。

すでに話題になっているMVCモデルを勉強していただければ分かると思いますが、
大規模システムになればなるほど、アプリケーションプログラム（例：PHP）が
直接SQLを発行することはありません。
データベースを安定的・継続的に動作させるため、DBへのアクセスには汎用的な
フレームワークを利用するか、専用APIを用意する（PHPではなくC++やJavaで実
装することあり）ことが普通に行われます。アプリケーションとDBの間に1枚か
ませることで、入出力データの整合性チェック（バリデーションチェック）を行
うとともに、SQLインジェクションなどの攻撃を防止する役目を持たせます。
DBアクセスはフレームワークないしは専用APIが担いますので、アプリケーショ
ンの方ではDBユーザーについて考慮する必要はありません。

「PHPとデータベース」連載中
<A HREF="http://www.pahoo.org/e-soul/webtech/php07/">http://www.pahoo.org/e-soul/webtech/php07/</A>

==========================
  パパぱふぅ
  <A HREF="http://www.pahoo.org/">http://www.pahoo.org/</A>
==========================

</PRE>




]]></description></item><item><author>Ryo Hayashi</author><pubDate>Mon, 16 Nov 2009 23:46:45 +0900</pubDate><title>[PHP-users 34843] Re: PHPの実装方法について</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035360.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>林と申します。

&gt;<i> 1.データベースをサービス単位で分割する
</I>
サービスではなく、データベースのテーブル単位で分けたほうが汎用性、再利用
性の面で有効だと思います。
逆にサービス単位でデータベースを分けてしまうと、新たな機能が加わるたびに
サービス間の連携を実装レベルで検討しなおさなくてはなりません。
これではそもそも仕様という前提の必要性がなくなってしまいます。

サービスという概念はあくまでも運用的な視点でのみ明らかな要素のはすです。
システム的本質はサービスの根底となるテーブル単位でしか計れなくないですか？
仮にユーザーを定義しているテーブルがあったとして、それをサービスごとにつ
くるのであればそもそも同一化する必要はないわけですよね。

&gt;<i> システムを横断してコンテンツを提供するため、データベースとのデータ操作を共有
</I>&gt;<i> 　出来るようシステム単位「データクラス」を作成し、別のシステムからデータ操作をおこなった
</I>&gt;<i> 　場合でも単一の結果が得られるようにします。
</I>
これこそ正にモデル依存の設計ではないですか？別のシステムからデータ操作を
行っても単一の結果が得られるように実装するならば、システムという概念自体
足かせでしかないはすです。
モデル操作の組み合わせの結果、ひとつのシステムが表現できると考えた方がよ
り合理的だと思います。

そういった面で飯塚さんの仰られるフレームワークをベースにした実装が最も合
理的な選択だと僕も思います。
繰り返しますが、システムは仕組みであって、一連の実装を連続して組み合わせ
た結果起こる事象の結果に過ぎません。
テキストを書き込む機能が存在するので”掲示板”というシステムと表現できるだ
けで、視点を変えれば Twitter になったり、tumblr になるわけなのではないで
しょうか。

そこを前提としてとらえてしまうと、破綻が生じるはずです。なぜなら複数のシ
ステムを立ち上げると言う事は、即ちそれぞれのシステムに加える事の出来ない
要素があるからです。だからこそ複数のシステムで表現しようと思うわけであっ
て、理想的には一つのシステムで全てが表現できればいいはずです。

そう考えると表向きは別のシステムだけど、内部的には一つの仕組みの見せ方を
変えているだけ、と考えた方が理にかなっているのではないでしょうか。

僕の言葉では少し足りない部分がありますので、以下にあげるページをご一読下
さい。
<A HREF="http://old-journal.sooey.com/2008/03/26/717/">http://old-journal.sooey.com/2008/03/26/717/</A>

飯塚さんが仰られる MVC が今検討されている仕組みに合理的にマッチする事が
ご理解いただけると思います。


┏━┯━┯━┯┯━┓
┃─┤─│─├┤─┨
┠─│┌┤││├─┃
┠─┴┘└┴┴┴─┨
┃     林  亮     ┃
┃  <A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">ryo ＠ spais.jp</A>  ┃
┃<A HREF="http://spais.jp/&#9475;">http://spais.jp/┃</A>
┗━━━━━━━━┛
</PRE>



]]></description></item><item><author>飯塚康至</author><pubDate>Mon, 16 Nov 2009 20:09:50 +0900</pubDate><title>[PHP-users 34842] Re: PHPの実装方法について</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035359.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>こんにちは、飯塚です。フレームワークを利用するというのはどうでしょう。そういう話でなく？
CakePHPとかZendとかいろいろあります。MVCモデルが基本かと思います。

2009年11月16日20:04  &lt;<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">aug721 ＠ gmail.com</A>&gt;:
&gt;<i> オカムラと申します。
</I>&gt;<i>
</I>&gt;<i> PHPに限った話題でなく恐縮ですが、経験豊富な皆さんからシステムの実装について意見を頂ければと思います。
</I>&gt;<i>
</I>&gt;<i> 複数のシステムが連携するサービスが、各システムはデータベースを利用するとします。
</I>&gt;<i>
</I>&gt;<i> システムは
</I>&gt;<i> - 会員システム
</I>&gt;<i> - ブログシステム
</I>&gt;<i> - オークションシステム
</I>&gt;<i> - SNS
</I>&gt;<i> - その他
</I>&gt;<i> のように分かれており、各サービスは、会員システムを共有するようなものです。
</I>&gt;<i>
</I>&gt;<i> ブログにSNSの情報を表示したり、その逆といったサービス間の連携も発生します。
</I>&gt;<i>
</I>&gt;<i> このようなサービスを開発する場合、データベースをどのように分け、PHPでどのように実装するのが理想でしょうか？
</I>&gt;<i> 規模等、その他の要件により色々な考えはあると思いますが、何かしら決まった答えがあるのではと思っているのですが、
</I>&gt;<i> 自分の考えは下記のような実装です。
</I>&gt;<i>
</I>&gt;<i> 1.データベースをサービス単位で分割する
</I>&gt;<i> →規模が大きくなりデータが増えた場合にスケールアウトを容易にするため
</I>&gt;<i> 1つのデータベースに全システムのデータを入れるという選択肢もあるが、
</I>&gt;<i> 拡張性を考慮して分割する。
</I>&gt;<i> 1つのデータベースに全システムのデータを入れるとシステムを横断するような
</I>&gt;<i> SQLを書きやすい等のメリットもあるが、後述する2.の方法でシステムの横断を
</I>&gt;<i> 可能とする。
</I>&gt;<i>
</I>&gt;<i> 2.データベースを横断して利用できるデータベースユーザを作成する
</I>&gt;<i> →システムを横断するSQL（JOIN）を書きやすくする
</I>&gt;<i> JOINせずにそれぞれのシステムに対してSQLを書きプログラムで処理する方法もあるが
</I>&gt;<i> 応答時間を優先するためJOINできるユーザを作成
</I>&gt;<i>
</I>&gt;<i> 3.PHPの実装
</I>&gt;<i> システムを横断してコンテンツを提供するため、データベースとのデータ操作を共有
</I>&gt;<i> 出来るようシステム単位「データクラス」を作成し、別のシステムからデータ操作をおこなった
</I>&gt;<i> 場合でも単一の結果が得られるようにします。
</I>&gt;<i> 各システム固有の機能は「処理クラス」に記述し、「実行ファイル」から呼び出します。
</I>&gt;<i> 「処理クラス」のメソッドを呼び出す際に、都度たくさんの引数で渡さないで良いように
</I>&gt;<i> 「処理クラス」でデータを保持します。
</I>&gt;<i>
</I>&gt;<i> ファイルは以下のこのように分かれます。
</I>&gt;<i>
</I>&gt;<i> - データベース基本クラス
</I>&gt;<i> database_base.php
</I>&gt;<i> データベースへの接続、SQL実行など基本的なデータベース処理
</I>&gt;<i>
</I>&gt;<i> - データクラス
</I>&gt;<i> data_&lt;サービス名&gt;.php
</I>&gt;<i> 「データベース基本クラス」を継承し、サービスに応じたSQLを実行する
</I>&gt;<i>
</I>&gt;<i> - 処理クラス（機能に応じて1サービスに1〜複数ファイル存在する）
</I>&gt;<i> &lt;サービス名&gt;.php
</I>&gt;<i>
</I>&gt;<i> - 実行ファイル（URL毎に1ファイル）
</I>&gt;<i> hogehoge.php
</I>&gt;<i>
</I>&gt;<i> ここまでは自分として良かったのですが、「処理クラス」から「データクラス」のメソッド
</I>&gt;<i> を実行するところでイマイチな実装になってしまいました。
</I>&gt;<i>
</I>&gt;<i> 1.「処理クラス」が「データクラス」を継承すれば良さそうですが、複数のサービスの
</I>&gt;<i> 「データクラス」を継承するのはどうか？
</I>&gt;<i> システムが増えるたびに継承する「データクラス」が増えるのはあまり良い実装とは
</I>&gt;<i> 言えないのではないか。
</I>&gt;<i> そもそもPHPで多重継承に上限がある？
</I>&gt;<i>
</I>&gt;<i> 2.「処理クラス」のメソッドを実行する際に必要なシステムの「データクラス」を引数として渡す。
</I>&gt;<i>
</I>&gt;<i> そのシステム構成であれば、このように実装した方が良い、そもそも、そう言う話は○○○でした方が良い等、
</I>&gt;<i> アドバイスを頂ければと思います。
</I>&gt;<i>
</I>&gt;<i> よろしくお願いいたします。
</I>&gt;<i> _______________________________________________
</I>&gt;<i> PHP-users mailing list  <A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">PHP-users ＠ php.gr.jp</A>
</I>&gt;<i> <A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">http://ml.php.gr.jp/mailman/listinfo/php-users</A>
</I>&gt;<i> PHP初心者のためのページ - 質問する前にはこちらをお読みください
</I>&gt;<i> <A HREF="http://oldwww.php.gr.jp/php/novice.php3">http://oldwww.php.gr.jp/php/novice.php3</A>
</I>&gt;<i>
</I>&gt;<i>
</I>


-- 
以上、宜しくお願いします。

-------------------------------------------------------------------------------
【みんなの研究生活　P-Lab(1.0)】<A HREF="http://www.acl-inc.co.jp/p-lab">http://www.acl-inc.co.jp/p-lab</A>
株式会社エイシーエル
飯塚 康至（明星大学非常勤講師・情報システム学会）
ブログ：<A HREF="http://d.hatena.ne.jp/YasushiIizuka/">http://d.hatena.ne.jp/YasushiIizuka/</A>
Twitter：@yasushiiizuka
TEL：03-5308-1141
FAX：03-5308-1142
-------------------------------------------------------------------------------
</PRE>



]]></description></item><item><author>aug721 ＠ gmail.com</author><pubDate>Mon, 16 Nov 2009 20:04:49 +0900</pubDate><title>[PHP-users 34841] PHPの実装方法について</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035358.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>オカムラと申します。

PHPに限った話題でなく恐縮ですが、経験豊富な皆さんからシステムの実装について意見を頂ければと思います。

複数のシステムが連携するサービスが、各システムはデータベースを利用するとします。

システムは
　- 会員システム
　- ブログシステム
　- オークションシステム
　- SNS
　- その他
のように分かれており、各サービスは、会員システムを共有するようなものです。

ブログにSNSの情報を表示したり、その逆といったサービス間の連携も発生します。

このようなサービスを開発する場合、データベースをどのように分け、PHPでどのように実装するのが理想でしょうか？
規模等、その他の要件により色々な考えはあると思いますが、何かしら決まった答えがあるのではと思っているのですが、
自分の考えは下記のような実装です。

1.データベースをサービス単位で分割する
　→規模が大きくなりデータが増えた場合にスケールアウトを容易にするため
　　1つのデータベースに全システムのデータを入れるという選択肢もあるが、
　　拡張性を考慮して分割する。
　　1つのデータベースに全システムのデータを入れるとシステムを横断するような
　　SQLを書きやすい等のメリットもあるが、後述する2.の方法でシステムの横断を
　　可能とする。

2.データベースを横断して利用できるデータベースユーザを作成する
　→システムを横断するSQL（JOIN）を書きやすくする
　　JOINせずにそれぞれのシステムに対してSQLを書きプログラムで処理する方法もあるが
　　応答時間を優先するためJOINできるユーザを作成

3.PHPの実装
　システムを横断してコンテンツを提供するため、データベースとのデータ操作を共有
　出来るようシステム単位「データクラス」を作成し、別のシステムからデータ操作をおこなった
　場合でも単一の結果が得られるようにします。
　各システム固有の機能は「処理クラス」に記述し、「実行ファイル」から呼び出します。
　「処理クラス」のメソッドを呼び出す際に、都度たくさんの引数で渡さないで良いように
　「処理クラス」でデータを保持します。

　ファイルは以下のこのように分かれます。

　- データベース基本クラス
　　database_base.php
　　データベースへの接続、SQL実行など基本的なデータベース処理

　- データクラス
　　data_&lt;サービス名&gt;.php
　　「データベース基本クラス」を継承し、サービスに応じたSQLを実行する

　- 処理クラス（機能に応じて1サービスに1〜複数ファイル存在する）
　　&lt;サービス名&gt;.php

　- 実行ファイル（URL毎に1ファイル）
　　hogehoge.php

ここまでは自分として良かったのですが、「処理クラス」から「データクラス」のメソッド
を実行するところでイマイチな実装になってしまいました。

1.「処理クラス」が「データクラス」を継承すれば良さそうですが、複数のサービスの
　「データクラス」を継承するのはどうか？
　システムが増えるたびに継承する「データクラス」が増えるのはあまり良い実装とは
　言えないのではないか。
　そもそもPHPで多重継承に上限がある？

2.「処理クラス」のメソッドを実行する際に必要なシステムの「データクラス」を引数として渡す。

そのシステム構成であれば、このように実装した方が良い、そもそも、そう言う話は○○○でした方が良い等、
アドバイスを頂ければと思います。

よろしくお願いいたします。
</PRE>



]]></description></item><item><author>KOYAMA Tetsuji</author><pubDate>Fri, 13 Nov 2009 13:33:21 +0900</pubDate><title>[PHP-users 34840] PostgreSQL Conference 2009 Japan の最終ご案内</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035357.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>小山です。

日本 PHP ユーザ会も協力団体として名を連ねている
「PostgreSQL Conference 2009 Japan」が来週 11/20〜21 に
開催されます。チケットの販売期限は今週の日曜日まで
ですので、ご興味のある方はお早めにお買い求めください。

========================================================
みなさま

いよいよ来週の開催となりました、PostgreSQL Conference 2009 Japan
ですが、チケット販売は★15日まで★となっております。
席にはまだ余裕がありますが、この週末がチケットの販売期限となります。
どうぞ、お忘れなくご購入手続きを！

その他のお知らせ

- 当日配布のノベルティイメージをwebに公開しました。
- 公式 twitter ハッシュタグを作成しました #pgcon09j
- gihyo.jp でカンファレンスの見どころセッションが紹介されています
 <A HREF="http://gihyo.jp/dev/feature/01/lets-postgresql/0007">http://gihyo.jp/dev/feature/01/lets-postgresql/0007</A>

※このメールについて
このご案内は、自由に転送いただけます。是非ご利用ください。
-------------------------------------------------------------------------
                 PostgreSQL Conference 2009 Japan
               - JPUG 10th Anniversary Conference -

日時：　2009年11月20(金),21(土) 10:00〜17:00
場所：       AP浜松町（東京都港区）
主催：     日本PostgreSQLユーザ会
運営：     PostgreSQL Conference 2009 Japan 実行委員会
協賛企業：【プラチナス】SRA OSS, Inc. 日本支社
【ゴールド】サイオステクノロジー株式会社
【ゴールド】フォルシア株式会社
【シルバー】Morph Labs
協力団体：オープンソースビジネス推進協議会
日本PHPユーザ会
新潟オープンソース協会
日本Androidの会
         日本セキュアOSユーザ会
定員：     各日240名（2日間計480名）
参加費用：Business Day(11/20)  6,500円(カンファレンス、レセプション参加)
       Community Day(11/21) 3,500円（カンファレンス、ランチつき）
申込方法：10月15日〜11月15日の間に全国のローソンにあるLoppi端末にて購入
(ローチケ.com から予約も可能)
購入の際には、以下のイベント名、Lコードをご利用ください。
               イベント名：PostgreSQL Conference 2009
                Lコード：31552
         ※定員になり次第締め切りますのでお早めの購入をお勧めします
参加特典：カンファレンススライド冊子（各日配布）
協賛企業各種ノベルティ
PostgreSQL Conference 2009 Japan オリジナルノベルティ
レセプションによる開発者との意見交換(11/20参加者のみ)
         ランチつき(11/21参加者のみ）

※ 詳細情報は、下記URLで随時更新しております。
<A HREF="http://www.postgresql.jp/events/pgcon09j/j/pgcon2009j/">http://www.postgresql.jp/events/pgcon09j/j/pgcon2009j/</A>

【プログラム:Business Day(11/20)】

プログラム詳細⇒
<A HREF="http://www.postgresql.jp/events/pgcon09j/j/program_1">http://www.postgresql.jp/events/pgcon09j/j/program_1</A>

【プログラム:Community Day(11/21)】

プログラム詳細⇒
<A HREF="http://www.postgresql.jp/events/pgcon09j/j/program_2">http://www.postgresql.jp/events/pgcon09j/j/program_2</A>

お問合せ
PostgreSQL Conference 2009 Japan 実行委員会
E-mail: pgcon09j at ml.postgresql.jp

-------------------------------------------------------------------------
PostgreSQL Conference 2009 Japan 実行委員会
実行委員長 稲葉　香理(<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">i-kaori ＠ postgresql.jp</A>)

========================================================

-- 
    小山哲志＠テックスタイル
    <A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">koyama ＠ techstyle.jp</A> : <A HREF="http://techstyle.jp/">http://techstyle.jp/</A>
    <A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">koyama ＠ hoge.org</A> : <A HREF="http://d.hatena.ne.jp/koyhoge/">http://d.hatena.ne.jp/koyhoge/</A>
</PRE>



]]></description></item><item><author>kondo</author><pubDate>Fri, 13 Nov 2009 10:07:22 +0900</pubDate><title>[PHP-users 34839] Re: PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035356.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>近藤です。

&gt;<i> よく使うパッケージで、かつ新し目のものを使いたい場合、もしくは
</I>&gt;<i> 本家のパッケージで必要な機能が入っていない場合（例：isc-dhcpd
</I>&gt;<i> の ldap support 等）については、自前で RPM パッケージを作って職
</I>&gt;<i> 場の yum リポジトリサーバに置いて使っています。管理するサーバの
</I>&gt;<i> 台数が多いのと、ビルドのやり方忘れた ;-) ので、さすがに tar ball
</I>&gt;<i> から入れることはないですね。
</I>
やはり、少々特殊な環境のようですね。（私から見てかもしれません）

こちらの職場ではできるだけデフォルトパッケージでやりたいもので、
RedHatで提供されているものはRedHatのバージョンでやっております。

私の勘違いかもしれませんが、5.1.6だとPDOは使えないのかなと思ってました。
とりあえず、PEARのMDB2で使えたので良かったです。

</PRE>



]]></description></item><item><author>HOTTA Michihide</author><pubDate>Thu, 12 Nov 2009 19:04:26 +0900</pubDate><title>[PHP-users 34838] Re: PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035355.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>堀田＠長崎市です。

From: &quot;kondo&quot; &lt;<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">nobuaki3.kondo ＠ toshiba.co.jp</A>&gt;
To: &quot;PHP-users ML&quot; &lt;<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">php-users ＠ php.gr.jp</A>&gt;
Date: Thu, 12 Nov 2009 15:19:52 +0900
Subject: [PHP-users 34837] Re: PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。

&gt;<i> 近藤です。
</I>&gt;<i> 
</I>&gt;<i> CentOS5.3で「php-5.2.8-4」ということですが、
</I>&gt;<i> PHPはソースから構築しているのでしょうか。
</I>&gt;<i> 
</I>&gt;<i> Redhathaどうやらまだ5.1.6のようです。
</I>&gt;<i> CentOSはRedHatのソースから再構築されたものだと思ってますので、
</I>&gt;<i> 各パッケージのバージョン自体はCentOSもRedHatも同じかと思いますが、
</I>&gt;<i> 違うということはソースから新たに構築しているのかなとおもいました。
</I>&gt;<i> 
</I>&gt;<i> 各パッケージのアップデートとかを考えるとソースからの
</I>&gt;<i> 構築は避けようと思ってます。
</I>
よく使うパッケージで、かつ新し目のものを使いたい場合、もしくは
本家のパッケージで必要な機能が入っていない場合（例：isc-dhcpd 
の ldap support 等）については、自前で RPM パッケージを作って職
場の yum リポジトリサーバに置いて使っています。管理するサーバの
台数が多いのと、ビルドのやり方忘れた ;-) ので、さすがに tar ball 
から入れることはないですね。

# Oracle が動いているサーバに関してはノータッチなので、どうやっ
# て構築しているかは知りません。

-- 
HOTTA Michihide &lt;<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">hotta ＠ net-newbie.com</A>&gt;
</PRE>



]]></description></item><item><author>kondo</author><pubDate>Thu, 12 Nov 2009 15:19:52 +0900</pubDate><title>[PHP-users 34837] Re: PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035354.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>近藤です。

CentOS5.3で「php-5.2.8-4」ということですが、
PHPはソースから構築しているのでしょうか。

Redhathaどうやらまだ5.1.6のようです。
CentOSはRedHatのソースから再構築されたものだと思ってますので、
各パッケージのバージョン自体はCentOSもRedHatも同じかと思いますが、
違うということはソースから新たに構築しているのかなとおもいました。

各パッケージのアップデートとかを考えるとソースからの
構築は避けようと思ってます。

</PRE>



]]></description></item><item><author>HOTTA Michihide</author><pubDate>Thu, 12 Nov 2009 14:40:41 +0900</pubDate><title>[PHP-users 34836] Re: PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035353.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>堀田＠長崎市です。

From: &quot;kondo&quot; &lt;<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">nobuaki3.kondo ＠ toshiba.co.jp</A>&gt;
To: &quot;PHP-users ML&quot; &lt;<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">php-users ＠ php.gr.jp</A>&gt;
Date: Fri, 6 Nov 2009 15:56:29 +0900
Subject: [PHP-users 34830] PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。

&gt;<i> Oracleが入ってないサーバAからORACLEが稼動しているサーバBにPHP
</I>&gt;<i> でアクセスしたいと思っています。
</I>
直接の回答ではないですが、ウチの職場では pdo でやっています。

<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">m-hotta ＠ gtr</A>:~$ cat /etc/redhat-release
CentOS release 5.3 (Final)

<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">m-hotta ＠ gtr</A>:~$ rpm -qa|grep -E '^(php|ora)' | sort
oracle-instantclient-basic-10.2.0.3-1
oracle-instantclient-sqlplus-10.2.0.3-1
php-5.2.8-4.npuc
php-cli-5.2.8-4.npuc
php-common-5.2.8-4.npuc
php-ldap-5.2.8-4.npuc
php-mbstring-5.2.8-4.npuc
php-mysql-5.2.8-4.npuc
php-oci8-5.2.8-4.npuc
php-pdo-5.2.8-4.npuc
php-pear-1.4.9-4.el5.1
php-pear-Auth-SASL-1.0.2-4.el5.centos
php-pgsql-5.2.8-4.npuc

&lt;?php
//----------------------------------------------------------------
//  DB接続処理    for PDO
//----------------------------------------------------------------
$ora_db_string = 'oci:dbname=//fqdn/dbname';
try {
    $ora_db = new PDO($ora_db_string, $username, $password);
}
catch(PDOException $e) {
    echo $e-&gt;getMessage();
    die(&quot;Could not connet \&quot;$ora_db_string\&quot;\n&quot;);
}
$ora_db-&gt;exec(&quot;SET NAMES 'UTF-8'&quot;);
?&gt;

という感じです。これでひとつのアプリから Oracle とポスグレの両方
に接続しています。CLI でしか使ってませんが…。

-- 
HOTTA Michihide &lt;<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">hotta ＠ net-newbie.com</A>&gt;
</PRE>



]]></description></item><item><author>kondo</author><pubDate>Thu, 12 Nov 2009 13:26:12 +0900</pubDate><title>[PHP-users 34835] Re: PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035352.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>近藤です。

何とか接続できるようになりましたので報告します。

ただ、やったことが正しいことかわかりません。

行ったことは以下のような感じです。

tnsnames.oraを見直してもなかなかつながらない。
tnsnames.oraを変更すると、PHPでつながらないどころか
sqlplusでもつながらなくなる。

ということから、発想の転換をし、PEARのどこでエラーになっているのか？
という疑問になり、PEARのソースコードを参照。
/usr/share/pear/MDB2.phpから見ていき、/usr/share/pear/MDB2/Driver/oci8.php
を見ていくと、途中でusernameが書き換わっているところを発見。
とりあえず書き換わる部分をコメントアウトして書き換わらないようにしてみる。

function connect()の
$this-&gt;dsn['username'] = 
$this-&gt;options['database_name_prefix'].$this-&gt;database_name;
の部分のコメントアウト

それでもつながらないのでさらに見ていくと

$sid = sprintf(&quot;(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
                             (HOST=%s) (PORT=%s)))
                             (CONNECT_DATA=(SERVICE_NAME=%s)))&quot;,
という部分があり、「(CONNECT_DATA=(SERVICE_NAME=%s))」に着目。

tnsnamed.oraに(CONNECT_DATA=(SERVICE_NAME=SID)を足してみる・・・NG
tnsnamed.oraの(CONNECT_DATA=(SID=RMS3)を
　　　　　　(CONNECT_DATA=(SERVICE_NAME=SID)に変更してみる・・・NG
tnsnamed.oraを元に戻し、oci8.phpの「(CONNECT_DATA=(SERVICE_NAME=%s)))&quot;,」
を「(CONNECT_DATA=(SID=%s)))&quot;,」に変更してみる・・・OK

エラーが出なかっただけで本当につながったのか確認するために、

Webのサンプルプログラムを参考に
                while (($row = $res-&gt;fetchRow())) {
                        var_dump($row );
                }
を追加して実行した結果、
データベースの内容が出てきました。

pearのソースを修正したわけですが、果たしてよかったでしょうか？

</PRE>



]]></description></item><item><author>kondo</author><pubDate>Tue, 10 Nov 2009 11:15:36 +0900</pubDate><title>[PHP-users 34834] Re: PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035351.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>近藤です。

レスポンスが遅れてすみません。

OracleDBのサービス名は、SID=の部分に記入したSIDの部分だったようです。

&gt;<i> 　サーバBのOracleDBServerのバージョンをお知らせ下さい。
</I>&gt;<i> 　例えば、11.1.0.7のように、ドットを3つまでお示し下さい。
</I>&gt;<i> 　サーバb側のバージョンがあまりにも低いと接続できないかも。。。
</I>&gt;<i> 　でも、sql*plusでは接続できるから、通常はプログラムからの接続も可能
</I>&gt;<i> 　となりますが。。。
</I>
Oracleのバージョンは、10.2.0.3ということでした。

ISにシステム開発から管理を任せていたのですが、システムにかなり難があり、
（開発しなおす費用がないので）データからこちらで欲しい情報を作成しない
といだめだなーという状況で、PHPからのアクセスをまずできるように
すべく、このような質問をさせてもらってました。

MySQLならPHPでアクセスしやすいのですが、Oracleについては不慣れなもので...

</PRE>



]]></description></item><item><author>KAMIJO.Yasuyoshi</author><pubDate>Sun, 03 Jan 2010 03:01:09 +0900</pubDate><title>[PHP-users 34833] Re: PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035350.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>上條＠自宅と申します。

　kondoさん、お世話になります。

&gt;<i> &gt; 　これはサーバAの方ですよね。
</I>&gt;<i> &gt; 　サーバaより次のコマンドをチェックしてみてください。
</I>&gt;<i> &gt; 　&gt;TNSPING DB名
</I>&gt;<i> 
</I>&gt;<i> はい、サーバA側です。
</I>&gt;<i> TNSPINGですが、コマンドが無かったです。(tnspingでも無いようです。)
</I>
　Instantckientでしたね。
　失礼しました。InstantClientにはTNSPINGは入っていませんでした。

&gt;<i> &gt; 　sql*plusから接続可能とのことですが、DB名に何を指定していますか?
</I>&gt;<i> 
</I>&gt;<i> 先ほどのメールの中のDB名、ユーザ名、パスワード、IPアドレス、ポート番号、SIDは 
</I>&gt;<i> 
</I>&gt;<i> 伏せさせてもらうために置換しました。
</I>&gt;<i> プログラム、tnsnames.ora、sqlplutで同じ文言の部分は同じと思ってください。
</I>&gt;<i> 
</I>&gt;<i> そのため、tnsnames.oraでDB名となっていた部分と同じになります。
</I>
　サーバBのOracleDBServerのバージョンをお知らせ下さい。
　例えば、11.1.0.7のように、ドットを3つまでお示し下さい。
　サーバb側のバージョンがあまりにも低いと接続できないかも。。。
　でも、sql*plusでは接続できるから、通常はプログラムからの接続も可能
　となりますが。。。

&gt;<i> tnsnames.oraをもう一度見直してみます。
</I>
　サーバBのTnsnames.oraと合わせてみるのも手です。


　以上、よろしくお願いいたします。


 ●　作成者：上條　靖芳　e-mail:<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">yasuyoshi_kamijo ＠ ac.auone-net.jp</A>　 ●
			 blog:<A HREF="http://blogs.dion.ne.jp/yasuyoshi/">http://blogs.dion.ne.jp/yasuyoshi/</A>
 on DELL Vostro 1520 Genuine Intel(R) CPU 2.00GHz WinXP SP3
 Becky! 2.52.00_ja + VB2008 EE + IE8.0 + Oracle11gR1(11.1.0.7)
</PRE>



]]></description></item><item><author>kondo</author><pubDate>Sat, 02 Jan 2010 22:23:06 +0900</pubDate><title>[PHP-users 34832] Re: PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035349.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>近藤です。

助言ありがとうございます。

&gt;<i> 　ORA-12162はPEARの問題ではなく、TNSNAMES.ORA内の記述と接続文字列の記
</I>&gt;<i> 　述に誤りがあることを示しています。
</I>
そういうことでしたか。

&gt;<i> 　これはサーバAの方ですよね。
</I>&gt;<i> 　サーバaより次のコマンドをチェックしてみてください。
</I>&gt;<i> 　&gt;TNSPING DB名
</I>
はい、サーバA側です。
TNSPINGですが、コマンドが無かったです。(tnspingでも無いようです。)

oracle-instantclient11.2-basic-11.2.0.1.0-1
oracle-instantclient11.2-sqlplus-11.2.0.1.0-1
oracle-instantclient11.2-devel-11.2.0.1.0-1
を入れましたが、この中には無かったのかもしれません。

&gt;<i> 　sql*plusから接続可能とのことですが、DB名に何を指定していますか?
</I>
先ほどのメールの中のDB名、ユーザ名、パスワード、IPアドレス、ポート番号、SIDは 

伏せさせてもらうために置換しました。
プログラム、tnsnames.ora、sqlplutで同じ文言の部分は同じと思ってください。

そのため、tnsnames.oraでDB名となっていた部分と同じになります。

tnsnames.oraをもう一度見直してみます。
ありがとうございました。

</PRE>



]]></description></item><item><author>KAMIJO.Yasuyoshi</author><pubDate>Sat, 02 Jan 2010 15:43:05 +0900</pubDate><title>[PHP-users 34831] Re: PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035348.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>上條＠自宅と申します。

　kondoさん、お世話になります。

&gt;<i> サンプルを参考に、以下の接続プログラムを作りましたが、つながりません。
</I>&gt;<i> 気になるのが、'<A HREF="oci8://&#12518;&#12540;&#12470;&#21517;:&#12497;&#12473;&#12527;&#12540;&#12489;@IP&#12450;&#12489;&#12524;&#12473;:&#12509;&#12540;&#12488;&#30058;&#21495;/DB&#21517;';">oci8://ユーザ名:パスワード@IPアドレス:ポート番号/DB名';</A>
</I>&gt;<i> と指定しているのにMDB2::connect($dsn)すると、エラーが
</I>&gt;<i> 「** oci8(oci8)://DB名:<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">xxx ＠ IP</A>アドレス:ポート番号/DB名&quot;」
</I>&gt;<i> となることです。
</I>&gt;<i> 何故かユーザ名がDB名に置き換わってます。
</I>
　DB名の指定が間違っていませんか。

&gt;<i> # php test.php
</I>&gt;<i> string(254) &quot;_doConnect: [Error message: unable to establish a connection]
</I>&gt;<i> [Native code: 12162]
</I>&gt;<i> [Native message: ORA-12162: TNS: 指定されたNetサービス名は正しくありません。] 
</I>&gt;<i> 
</I>&gt;<i>  ** oci8(oci8)://DB名:<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">xxx ＠ IP</A>アドレス:ポート番号/DB名&quot;
</I>&gt;<i> MDB2 Error: connect failed
</I>
　ORA-12162はPEARの問題ではなく、TNSNAMES.ORA内の記述と接続文字列の記
　述に誤りがあることを示しています。

　エラーメッセージの解説より引用
---------------------------------------------------------------------------
　「TNS: 指定されたNetサービス名は正しくありません。」
　「TNSNAMES.ORA内またはディレクトリ・サーバー（Oracle Internet Directory）
　内のネット・サービス名に対応する接続記述子が誤って指定されています。」
　「ローカル・ネーミングを使用している場合は、TNSNAMES.ORAファイル内で対応
　する接続記述子に構文エラーがないことを確認してください。ディレクトリ・ネ
　ーミングを使用している場合は、ディレクトリ・ネーミング用に管理を介して提
　供された情報を確認してください。」
---------------------------------------------------------------------------

&gt;<i> ■サーバA側
</I>&gt;<i> ・OSはRedHatEL5です。
</I>&gt;<i> ・サーバAにはoracle-instantclient11.2をインストールしました。
</I>
　これはサーバAの方ですよね。
　サーバaより次のコマンドをチェックしてみてください。
　&gt;TNSPING DB名

&gt;<i> ・/usr/lib/oracle/11.2/client/network/admin/tnsnames.oraの内容
</I>&gt;<i> ------------------------------------------------------------
</I>&gt;<i> DB名 =
</I>&gt;<i>   (DESCRIPTION=
</I>&gt;<i>     (ADDRESS_LIST=
</I>&gt;<i>         (ADDRESS =
</I>&gt;<i>           (COMMUNITY=tcp.world)
</I>&gt;<i>           (PROTOCOL=TCP)
</I>&gt;<i>           (Host=IPアドレス)
</I>&gt;<i>           (Port=ポート番号)
</I>&gt;<i>         )
</I>&gt;<i>     )
</I>&gt;<i>     (CONNECT_DATA=(SID=SID)
</I>&gt;<i>     )
</I>&gt;<i>   )
</I>&gt;<i> ------------------------------------------------------------
</I>
　sql*plusから接続可能とのことですが、DB名に何を指定していますか?


　以上、再チェックをよろしくお願いいたします。


 ●　作成者：上條　靖芳　e-mail:<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">yasuyoshi_kamijo ＠ ac.auone-net.jp</A>　 ●
			 blog:<A HREF="http://blogs.dion.ne.jp/yasuyoshi/">http://blogs.dion.ne.jp/yasuyoshi/</A>
 on DELL Vostro 1520 Genuine Intel(R) CPU 2.00GHz WinXP SP3
 Becky! 2.52.00_ja + VB2008 EE + IE8.0 + Oracle11gR1(11.1.0.7)
</PRE>



]]></description></item><item><author>kondo</author><pubDate>Sat, 02 Jan 2010 08:02:09 +0900</pubDate><title>[PHP-users 34830] PHP　PEARでOracleにアクセスするにはどうすればいいでしょうか。</title><link>http://ml.php.gr.jp/pipermail/php-users/2009-November/035347.html</link><description><![CDATA[
<!--beginarticle-->
<PRE>近藤です。

お世話になります。

Oracleが入ってないサーバAからORACLEが稼動しているサーバBにPHPでアクセス
したいと思っています。
インターネットで検索しながら試行錯誤していますが、なかなかつながらないので、
助言をいただければと思います。
PHPからOracleへのアクセスは大きく分けてPHPのコンパイル、PEARのパッケージ、
ZendFrameworkを使うの3種類あるようなことが判ったので、PHPのアップデートを
考えるとPHPをソースからコンパイルするのは避けたく、ZendFrameworkは使ったこと
が無かったのでPEARで行こうかと思い、挑戦中です。

サンプルを参考に、以下の接続プログラムを作りましたが、つながりません。
気になるのが、'<A HREF="oci8://&#12518;&#12540;&#12470;&#21517;:&#12497;&#12473;&#12527;&#12540;&#12489;@IP&#12450;&#12489;&#12524;&#12473;:&#12509;&#12540;&#12488;&#30058;&#21495;/DB&#21517;';">oci8://ユーザ名:パスワード@IPアドレス:ポート番号/DB名';</A>
と指定しているのにMDB2::connect($dsn)すると、エラーが
「** oci8(oci8)://DB名:<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">xxx ＠ IP</A>アドレス:ポート番号/DB名&quot;」
となることです。
何故かユーザ名がDB名に置き換わってます。

どうすれば接続できますでしょうか？
助言の方をよろしくお願いします。

■接続テストプログラム
&lt;?php
require_once 'MDB2.php';

$dsn = '<A HREF="oci8://&#12518;&#12540;&#12470;&#21517;:&#12497;&#12473;&#12527;&#12540;&#12489;@IP&#12450;&#12489;&#12524;&#12473;:&#12509;&#12540;&#12488;&#30058;&#21495;/DB&#21517;';">oci8://ユーザ名:パスワード@IPアドレス:ポート番号/DB名';</A>

$mdb2 =&amp; MDB2::connect($dsn);
if (PEAR::isError($mdb2)) {
        //var_dump($mdb2);
        var_dump($mdb2-&gt;getuserinfo());
        die($mdb2-&gt;getMessage().&quot;\n&quot;);
}else{
        print &quot;Success!!\n&quot;;
        //クエリを実行します
        $res =&amp; $mdb2-&gt;query('SELECT * FROM テーブル名');
        // 結果がエラーでないかどうかを常にチェックします
        if (PEAR::isError($res)) {
                die($res-&gt;getMessage());
        }else{
                print &quot;Success!!\n&quot;;
        }
}
$mdb2-&gt;disconnect();
?&gt;

■実行結果
# php test.php
string(254) &quot;_doConnect: [Error message: unable to establish a connection]
[Native code: 12162]
[Native message: ORA-12162: TNS: 指定されたNetサービス名は正しくありません。] 

 ** oci8(oci8)://DB名:<A HREF="http://ml.php.gr.jp/mailman/listinfo/php-users">xxx ＠ IP</A>アドレス:ポート番号/DB名&quot;
MDB2 Error: connect failed

■サーバA側
・OSはRedHatEL5です。
・サーバAにはoracle-instantclient11.2をインストールしました。

・環境変数は、以下のような実行してます。
export 
PATH=$PATH:/usr/lib/oracle/11.2/client/bin/:/usr/lib/oracle/11.2/client/lib/
export NLS_LANG=JAPANESE_JAPAN.AL32UTF8
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib/
export ORACLE_HOME=/usr/lib/oracle/11.2/client/
export TNS_ADMIN=/usr/lib/oracle/11.2/client/network/admin/

※「sqlplus ユーザ名/パスワード@DB名」だと接続できます。

・/usr/lib/oracle/11.2/client/network/admin/tnsnames.oraの内容
------------------------------------------------------------
DB名 =
  (DESCRIPTION=
    (ADDRESS_LIST=
        (ADDRESS =
          (COMMUNITY=tcp.world)
          (PROTOCOL=TCP)
          (Host=IPアドレス)
          (Port=ポート番号)
        )
    )
    (CONNECT_DATA=(SID=SID)
    )
  )
------------------------------------------------------------

・PHPパッケージ
# rpm -qa | grep php・・・PHPのバージョン
php-pear-1.4.9-4.el5.1
php-pdo-5.1.6-23.2.el5_3
php-mysql-5.1.6-23.2.el5_3
php-devel-5.1.6-23.2.el5_3
php-common-5.1.6-23.2.el5_3
php-ldap-5.1.6-23.2.el5_3
php-cli-5.1.6-23.2.el5_3
php-mbstring-5.1.6-23.2.el5_3
php-5.1.6-23.2.el5_3

・PEARのインストールパッケージ
PEARのMDB2,MDB2_Driver_oci8をインストール
# pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.1   stable
Console_Getopt   1.2     stable
DB               1.7.13  stable
MDB2             2.4.1   stable
MDB2_Driver_oci8 1.4.1   stable
PEAR             1.4.9   stable
XML_RPC          1.5.0   stable

・PHPでOCI8が認識されているか
# php -i | grep oci8
oci8
oci8.connection_class =&gt; no value =&gt; no value
oci8.default_prefetch =&gt; 100 =&gt; 100
oci8.events =&gt; Off =&gt; Off
oci8.max_persistent =&gt; -1 =&gt; -1
oci8.old_oci_close_semantics =&gt; Off =&gt; Off
oci8.persistent_timeout =&gt; -1 =&gt; -1
oci8.ping_interval =&gt; 60 =&gt; 60
oci8.privileged_connect =&gt; Off =&gt; Off
oci8.statement_cache_size =&gt; 20 =&gt; 20


</PRE>



]]></description></item></channel></rss>