質問: ### 環境 CentOS6 64bit php 7.0.15 ### 確認したいこと 当方知識浅く、ざっくり、それぞれの違いと役割だけ確認したいのですが、 CentOSのサーバーからOracleへ、 PHPを用いてOracleへ接続し各種操作がしたいと考えています。 その際、 php-oci8というものだけで済むのかと思ったのですが、 調べていると、PDO-OCIなるものも必要との情報も上がってきました。 しかしPDO-OCIはphp5.3までしかサポートしていない(?)とも書かれていたような気がします。 (これはちらっと見ただけでろくに確認はしていないのですが・・・) そこで確認したいのですが、 「php-oci8」と「PDO-OCI」とはそれぞれ どのようなもので、どういった役割があるのかを知りたいです。 CentOS6環境からOracleへ接続する場合、 双方とも導入しなければならないのでしょうか。。
回答: php-oci8 について OCI8 機能拡張(php-oci8)はOracleのクライアントライブラリを直接呼び出して、Oracle DBに接続するための PHP 関数群を提供するものです。 導入すると oci_ で始まる関数たちが使用できるようになり、それらを用いて Oracle にアクセスします。 OCI8 の PHPマニュアル PDO_OCI について PDO は、各種の DB アクセスのためにそれぞれ独自の関数を使うのではなく、同じ呼び出し方にしようという発想のもとに開発されたライブラリです。開発者は PDO に DB のタイプを指定するだけで同じやり方でアクセスできます。各 DB アクセス方法の違いは PDO 用のドライバモジュールが吸収してくれます。その PDO 用の Oracle ドライバが PDO_OCI というわけです。 PDO_OCI の PHPマニュアル それぞれの違い それぞれのモジュールは上記のように意味合いが違いますので、お互いに干渉することなく共存して導入することができます。どちらかの実行のためにもう片方が必要になるということもありません。ただしどちらも Oracle のクライアントライブラリ (SDK) が必要なことは同じです。 php-oci8 と PDO_OCI では PHP からの呼び出し方が全く異なりますので、自分がどちらを使ってプログラムを書きたいのかを考えてから、必要な方を導入すれば良いと思います。