2014-12-04 61 views
0

我們正在從Windows SBS 2011遷移到Windows Server 2012 R2。PHP,IIS,Oracle(OCI)不起作用

我們有一個內部網站,它使用PHP連接到我們的Oracle數據庫。

我想這個遷移到新的服務器,到目前爲止,我有:

  1. 安裝IIS服務器角色
  2. 安裝了PHP
  3. 下載Oracle即時客戶端爲C:\ instantclient
  4. 添加C:\ instantclient到PATH系統變量
  5. 將php_oci8.dll添加到php.ini並檢查PHP是否實際使用此php.ini
  6. 重啓動服務器

我仍然收到錯誤消息像oci_命令不被認可等

我迷路了。我在網上搜索,說明與我從內存中完成的一致。

我還沒有在網上找到一件我沒有做過的事情。

+0

那麼'phpinfo()'列出oci8? – Machavity 2014-12-04 13:32:44

+0

@Machavity no :-( – user4166144 2014-12-04 13:34:47

+0

有幾種可能性,一種是你的DLL沒有爲你已經安裝的PHP版本編譯,另一種是路徑仍然是錯誤的 – Machavity 2014-12-04 13:37:50

回答

1

根據您已經安裝了您可能需要包括bin文件夾的路徑,像這樣的InstantClient的版本:

C:\instantclient\bin 

要檢查DLL文件的路徑可在輸入where oci*.dll命令提示符。它應該返回一個匹配文件的列表。

另外,請記住,只是因爲您的帳戶可以看到DLL文件並不意味着IIS/PHP可以。該文件運行在可能沒有訪問文件權限的其他帳戶下。檢查您的IIS錯誤日誌和PHP php_errors.log文件是否有任何特定的錯誤消息。


編輯

經過相當長的chat,問題是由解決:

  • 更新InstantClient從10.1.0.5到10.2.0.5(如在所提到的module requirements在Windows上,php_oci8 DLL需要版本10gR2或更高版本的Oracle客戶端庫。
  • msvcr71.dll的副本添加到InstantClient文件夾中。
  • php.net下載並手動配置PHP而不是使用PHP Manager for IIS
  • 確保Path環境變量正確指向InstantClient和PHP文件夾。
+0

我的即時客戶端裏面沒有'\ bin',唯一的PHP錯誤是沒有找到'oci_connect'等命令 – user4166144 2014-12-09 11:35:49

+0

通常OCI無法加載時的行爲是爲PHP記錄錯誤,如「PHP啓動:無法加載動態庫'php_oci8_11g.dll' - 指定的模塊無法找到.'。這將確定只要告訴你有一個啓動錯誤。您是否確認路徑中提供了'oci * .dll'文件,並且IIS用戶可以訪問它們? – timclutton 2014-12-09 11:51:12

+0

是的,'C:\ instantclient'(oci * .dll'文件所在的位置)位於'PATH'中,'Everyone'具有完全訪問權限作爲測試。 – user4166144 2014-12-09 13:49:40

0

試試這個:

延長= php_oci8_12c。dll (而不是php_oci8.dll) - 這就是我正在使用的,你可能下載了與我一樣的即時客戶端。