2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XAMPP環境でOCI8拡張を使用したOracle接続に失敗する時の対処法

Posted at

新規参画案件で、XAMPPを用いて開発環境を構築していました。
phpで作られたアプリケーションからOracle DBへの接続でOCI8を利用しているのですが、Fatal error: Uncaught Error: Call to undefined function oci_connect() と表示されうまくいきませんでした。
その際に行った操作を残しておきます。

エラーの理解

まずは、表示されたエラーの理解からです。
Fatal error: Uncaught Error: Call to undefined function oci_connect()
これはoci_connect()関数が定義されていない。つまり見つからないよ~と教えてくれていますね。

OCI8が見つからなければ当然その中で定義されている関数も使えません。

image.png
XAMPPダッシュボードの右側にある「Shell」をクリックし以下を実行し、有効なモジュールを確認。

php -m

image.png

opensslpcreの間に当然見当たりません。

Apacheをダッシュボードから起動し、http://localhost/dashboard/phpinfo.phpにアクセスしてみます。
こちらでも当然見つかりません。
では、有効化していきましょう。

OCI8拡張機能を有効化

XAMPPインストール先配下にある/php/php.iniファイルを覗いてみます。

image.png

940行目のextension=oci8_19のコメントアウトを解除して、OCI8機能を有効化します。
有効化とあわせて、ddlがあるか確認しておきましょう。
./php/ext/php_oci8_19.dllこれがあれば問題なし。

Oracle Instant Clientをインストール

システムの環境変数の設定を開く。
image.png
環境変数>システム環境変数>PathにてOracle Instant ClientへのPathが通っていなければ設定する必要があります。

上記サイトより、Basic Packageをダウンロード。
image.png

適宜、適当なPathに解凍する。
解凍されたフォルダの中に"instantclient_23_6"(適宜バージョンは読み替えてください)があるので、ここにPathを通します。

image.png

上記のように追加してあげます。

多くの記事でここまでの手順でApacheを再起動すれば、解決されると書かれていますが、私の環境では解決しませんでした。

追加でやったこと

何も難しいことはやっていません。
image.png

XAMPPダッシュボードの右下Quitからちゃんと閉じて、接続中のブラウザも全て落とします。
再度、XAMPPを起動したところ、

image.png

image.png

と、望んだとおりに有効化されました。

おわりに

現場で試さないことには完全解決とは言えませんが、私用PCではこれで解決。
よくわかんねぇ。なにがダメだったんだ。0.5MD返して。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?