質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.08%

XamppからOCI8を認識してくれない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,937

nnn24

score 18

前提・実現したいこと

Oracleは初心者です。
OCI8が認識せずに途方に暮れています。

希望とする環境

OS:WindowsServer2016 64bit
DB:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
PHP:7.2.18(Xampp)

試したこと

・SQLplusでOracleへの接続を確認。
Instant Client 12.1.0.2.0(Win 32bitと64bit)をダウンロード。
・Cドライブの直下に置き、環境変数に追記 → C:\instantclient_12_1
・php.iniの「extension=oci8_12c」「extension=pdo_oci」のコメントアウトを解除
・XamppのコンパネからApache再起動 → 「phpinfo」にOCI8の表記が出ない。

更に確認したこと

・instantclient_12_1の32bit、64bit両方試す。
・やはり「phpinfo」にOCI8の表記が出ない。
・コマンドプロンプトで「php -v」を実行すると「C:\xampp\php\ext\php_oci8_12c.dll」からダイナミックリンクライブラリが見つかりませんでしたと出る。
・「php_oci8_12c.dll」はextの中にきちんと置いてある事を確認する。
・Apacheのエラーログを見ると「PHP Warning:  PHP Startup: Unable to load dynamic library 'oci8_12c'」と出る。
・再起動する→特に変わらず。。。

イメージ説明

ここで手が止まってしまいました。
似たようなお悩みでこちらの記事も参考にさせていただきましたが、上手くいきませんでした。
https://techassist.jp/blog?id=5

ただ別環境では、上記と同じ「Instant Client(32bit)」を使用して、特に何も起こることなくスムーズに動いてしまったので困惑しています。

動いた環境

OS:Windows10pro 64bit
DB:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
PHP:7.2.6(Xampp)

バージョンのすり合わせも必要あるかとは思いますが、ご指摘くだされば幸いです。
よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

+1

解決になったのかは微妙ですが、とりあえず接続はできたようなので、、、

見直したこと

phpのbit数(?)

phpinfoでのArchitectureの値を見る。

  • 困ってた環境「x64」=64bit
  • 動いた環境「x86」=32bit

これにより「Instant Client」は64bitにする。
Oracleは11gなので合わせるべきとは思いますが不安なので、「Instant Client 12.1.0.2.0」の「64bit」で固定する。

コマンドプロンプト

php -v


「ダイナミックリンクライブラリが見つかりませんでした」のアラートも出る。
「PHP Warning:  PHP Startup: Unable to load dynamic library 'oci8_12c'」も出る。

バッチ

質問に書いたURL先のバッチ処理を通してからXamppのコンパネを起動してからApacheをスタート。
※直接Xamppのコンパネを開かない。

もう一度コマンドプロンプト

php -v


「ダイナミックリンクライブラリが見つかりませんでした」のアラートは出なくなる。
「PHP Warning:  PHP Startup: Unable to load dynamic library 'oci8_12c'」もは変わらない。

ものはためしに適当にページ作って、「oci_connect」をかましてみる。

接続してた。


とりあえずは接続できてたので、先に進みたいと思います。
すっきりはしない。。。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

エラーにならってdllをext配下に置けば良いだけではないでしょうか?
php.iniのextensionに指定する場合は基本的にext配下を読みに行きます

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/06/19 13:18

    参考URLありがとうございます。
    似たようなファイル名も試しに検索してみましたが、なぜか動いた環境と見比べてみましたが差分は見当たりませんでした。

    キャンセル

  • 2019/06/19 13:27

    そうですか・・
    Oracle環境が手元にないので試せないため、このあたりですね。
    おおよそ出せそうなヒントと可能性は出したつもりなので、
    お手元でまた色々試してみてください。

    キャンセル

  • 2019/06/19 13:28

    いくつもヒントを出していただきありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.08%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る