teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

内容に合わせたタイトルの変更

2019/04/06 08:51

投稿

IST
IST

スコア14

title CHANGED
@@ -1,1 +1,1 @@
1
- PHPからOracleの接続時にstub見てまう現象
1
+ php.iniがphp_oci8.dll参照ない
body CHANGED
File without changes

1

問題の切り分け後に、書式を改善

2019/04/06 08:51

投稿

IST
IST

スコア14

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
- ```php
15
+ oci8.phpが使われているかどうかを確認するため、名前を変更。
15
- echo "a";
16
+ `php_oci8.dll` → `php_oci88.dll`
16
- @ocilogon
17
- echo "b";
18
- ```
19
17
 
20
- 上記の場合、 a のみが表示される
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
- * PhpStorm2018にダウングレード
27
+ * DB接続箇所以外は正常動作していることを確認済み
28
+ * DBはクライアントツール(SQL Developer)で接続可能なことを確認済み
55
- * PhpStorm自体アンインストール
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
- extension=php_oci8.dll
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
- * Git for Windows、start . 打つとCommand not foundとなったため環境変数にsystem32をセットし直しました。
44
+ PhpStormOCILogon()の呼び出し元にジャンプすると、PhpStorm側で用意されている
45
+ oci8.phpというファイルの下記の場所にジャンプします。
122
46
 
123
- パスが原因ではないことを確認するため、
124
- php -v でPHPが動作することを確認。
125
-
126
- PhpStorm はPHP5系からしか対応していませんが、それまでは問題なく使用できていたので『4系でPhpStorm を使用しているから』ではないと考えています。
47
+ https://github.com/JetBrains/phpstorm-stubs/blob/a7ab02b8f7fc78dec1e513ed5e732f117a0436c4/oci8/oci8.php#L1907
127
- (問題を解決して、このままPhpStormを使い続けたい)
128
-
129
- PHP4系と、少々古く、回答を得られにくいことは承知しておりますが、
130
- 自身の力量の限界まで試行錯誤した結果、解決できませんでした。
131
-
132
- 有識者の方々のお力をお貸しくださいましたら幸いです。