質問編集履歴
2
内容に合わせたタイトルの変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
php.iniがphp_oci8.dllを参照しない
|
body
CHANGED
File without changes
|
1
問題の切り分け後に、書式を改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,126 +7,41 @@
|
|
7
7
|
|
8
8
|
## 事象
|
9
9
|
|
10
|
-
突然、PHP からOracleに接続が出来なくな
|
10
|
+
突然、PHP からOracleに接続が出来なくなりました。
|
11
11
|
|
12
|
-
|
12
|
+
php_oci8.dllが正しく動作しません。
|
13
|
+
もしくは、php.iniがphp_oci8.dllを正しく見てくれません。
|
13
14
|
|
14
|
-
|
15
|
+
oci8.phpが使われているかどうかを確認するため、名前を変更。
|
15
|
-
|
16
|
+
`php_oci8.dll` → `php_oci88.dll`
|
16
|
-
@ocilogon
|
17
|
-
echo "b";
|
18
|
-
```
|
19
17
|
|
20
|
-
|
18
|
+
こちら…エラーになりません。
|
21
19
|
|
22
20
|
## 背景
|
23
21
|
|
24
22
|
突然、PHPからDBに繋がらなくなりました。
|
25
23
|
特に設定をいじったなどは、意識の範囲内では行なっていません。
|
26
24
|
|
27
|
-
### 正常動作していた環境
|
28
|
-
|
29
|
-
#### 昔
|
30
|
-
|
31
|
-
* Eclipse
|
32
|
-
* SQL Developer
|
33
|
-
|
34
|
-
#### 現在
|
35
|
-
|
36
|
-
* PhpStorm2018
|
37
|
-
* DataGrip
|
38
|
-
|
39
|
-
#### 正常動作しなくなった環境
|
40
|
-
|
41
|
-
* PhpStorm2019
|
42
|
-
* DataGrip
|
43
|
-
|
44
|
-
動いていた時期と動かなくなったことの間にやったことは、
|
45
|
-
|
46
|
-
* PhpStormのアップグレード
|
47
|
-
* (無関係とは思いますが)直前にMavenを別件でインストールしました。
|
48
|
-
|
49
|
-
アップグレード直後のPhpStormは、設定を引き継ぐかどうかを問われますが、何も考えずにデフォルトのままでOKをしています。
|
50
|
-
|
51
25
|
## やったこと
|
52
|
-
### PhpStorm
|
53
26
|
|
54
|
-
*
|
27
|
+
* DB接続箇所以外は正常動作していることを確認済み
|
28
|
+
* DBはクライアントツール(SQL Developer)で接続可能なことを確認済み
|
55
|
-
*
|
29
|
+
* php.ini の設定でphp_oci8.dllが有効であることを確認済み
|
30
|
+
* php_oci8.dll が `C:¥php¥extension¥` に置かれていることを確認済み
|
56
31
|
|
57
|
-
### Apatch
|
58
|
-
|
59
|
-
httpd.confのDocumentRootの確認
|
60
|
-
|
61
|
-
### PHP
|
62
|
-
|
63
|
-
DBへの接続情報が正しいことを確認
|
64
|
-
|
65
|
-
### DB
|
66
|
-
|
67
|
-
DataGripから接続し、データを参照できることを確認
|
68
|
-
|
69
|
-
### 設定ファイル
|
70
|
-
|
71
|
-
`php_oci8.dll` が以下のようになっていることを確認をしました。
|
72
|
-
|
73
32
|
```
|
74
|
-
|
33
|
+
phpinfo();
|
75
34
|
```
|
35
|
+
で、php.iniの場所を確認し、設定を書き換えてブラウザで表示をすると、変更が反映されるので、
|
36
|
+
php.iniの場所は正しいと思います。
|
76
37
|
|
77
|
-
また、`php_oci8.dll` が `C:¥php¥extension¥` に置かれていることを確認しました。
|
78
|
-
ソースを動かすと、DBに接続する箇所以外は正常に動作します。
|
79
|
-
|
80
38
|
`php_oci8.dll` が`Oracle 10gR2` で
|
81
39
|
`php_oci8_11g.dll` が `Oracle 11gR2` とされていますが、
|
82
40
|
私の環境では `php_oci8.dll` で平常時に動作していたので、`php_oci8.dll` で問題ないと思っています。
|
83
41
|
|
84
|
-
oci8.phpが使われているかどうかを確認するため、名前を変更。
|
85
|
-
`oci8.php` → `oci88.php`
|
86
|
-
…エラーになりませんでした。
|
87
|
-
|
88
|
-
### php.ini の確認
|
89
|
-
|
90
|
-
`oci8.php` の名前を変更してもエラーにならなかったため、
|
91
|
-
|
92
|
-
`extension_dir` も改めて確認しましたが問題はありません。
|
93
|
-
|
94
|
-
## 予測
|
95
|
-
|
96
|
-
接続の関数は、(PHP4系を使用しているので)@OCILogon(接続情報)で接続しています。
|
97
|
-
|
98
|
-
ここにカーソルを当てて、PhpStormの機能で、Ctrl + b で関数の定義元にジャンプしてみました。
|
99
|
-
すると、oci8.phpというファイルに飛びます。
|
100
|
-
|
101
|
-
ファイルのパスを調べてみると、以下のようになっています。
|
102
|
-
|
103
|
-
```
|
104
|
-
JetBrains/Toolbox/apps/PhpStorm/ch-0/191.6183.95/PhpStorm.app/Contents/plugins/php/lib/php.jar!/stubs/oci8/oci8.php
|
105
|
-
```
|
106
|
-
|
107
|
-
ここに定義されているのですが、中身が空となっています。
|
108
|
-
|
109
|
-
実際のソースと同様のものは以下のUrlです。
|
110
|
-
⇨[ソース](https://github.com/JetBrains/phpstorm-stubs/blob/a7ab02b8f7fc78dec1e513ed5e732f117a0436c4/oci8/oci8.php#L1907)
|
111
|
-
|
112
|
-
そのため、私はPhpStorm内のstubで用意されたocilogonを読み込んでしまっているのが原因なのではないかと考えています。
|
113
|
-
|
114
|
-
仮にこれが、PhpStormの設定だと仮定する場合、
|
115
|
-
PhpStormの設定の優先順位を、php.iniより低くするにはどのようにすればよいでしょうか。
|
116
|
-
|
117
|
-
また、php.ini が oci8.dll を見に行っているかを確認するには、私が行った『ファイル名を変更してエラーになるか確認する』以外に何かありますでしょうか。
|
118
|
-
|
119
42
|
## 備考
|
120
43
|
|
121
|
-
|
44
|
+
PhpStormでOCILogon()の呼び出し元にジャンプすると、PhpStorm側で用意されている、
|
45
|
+
oci8.phpというファイルの下記の場所にジャンプします。
|
122
46
|
|
123
|
-
パスが原因ではないことを確認するため、
|
124
|
-
php -v でPHPが動作することを確認。
|
125
|
-
|
126
|
-
|
47
|
+
https://github.com/JetBrains/phpstorm-stubs/blob/a7ab02b8f7fc78dec1e513ed5e732f117a0436c4/oci8/oci8.php#L1907
|
127
|
-
(問題を解決して、このままPhpStormを使い続けたい)
|
128
|
-
|
129
|
-
PHP4系と、少々古く、回答を得られにくいことは承知しておりますが、
|
130
|
-
自身の力量の限界まで試行錯誤した結果、解決できませんでした。
|
131
|
-
|
132
|
-
有識者の方々のお力をお貸しくださいましたら幸いです。
|