2016-02-29 45 views
1

我目前正在設置一臺Windows 10 Pro x64機器來處理Apache,PHP及其oci8擴展。 我成功設法讓oci8在OSX 10.11和Windows 2012 Server上工作,所以我想我知道該怎麼做。但是,這是32位 - 現在是64OCI8 with PHP7 - 找不到模塊

現在安裝的軟件是:

  • 的Apache 2.4.18 64
  • PHP 7.0.3 TS 64
  • Oracle即時客戶端64(instantclient-基本-windows.x64-12.1.0.2.0)
  • OCI8 2.1.0 TS 64

我不明白它的工作。該錯誤信息是:

警告:PHP啓動:無法加載動態庫 中, 'ext \ php_oci8_12c.dll' - 達斯angegebene MODUL wurde nicht gefunden。 (模塊未找到。)在未知

在線0

擴展名 'OCI8' 不存在。

我安裝了Oracle Instant Client,將其目錄寫入PATH變量,並將php_oci8_12c.dll文件複製到PHP ext目錄並取消註釋php.ini中的相應行。這應該不夠嗎?

我#2和有關類似問題的其他網站在這裏看了很多貼子,事情我已經試過:

  • 移動所有DLL到C:\ Windows \ System32下
  • 包括PHP擴展目錄在PATH變量
  • 重新檢查,每一個組分是64位
  • 創建ORACLE_HOME和ORACLE_BASE變量(這不應該是必要的)

如果我改變php_oci8_12c.dll 64位到32位的一個,我得到一個不同的錯誤信息:

警告:PHP啓動:無法加載動態庫中,「ext \ php_oci8_12c.dll」 - %1 IST keine zulässigeWin32-Anwendung。 (%1不是有效的Win32程序。)

在未知

在線0

擴展名 'OCI8' 不存在。

任何想法有什麼問題呢?

謝謝!

+0

你似乎有DLL的第三方編譯而且它可能使用不同的VC運行庫。你有沒有試過內置的DLL? –

+1

還有一件事... NTS認爲PHP不能作爲Apache模塊運行,這是否正確?你在使用FastCGI嗎? –

+0

謝謝你的TS建議(誤讀下載網站)。 'php.exe --ri oci8'現在顯示已安裝的擴展。它仍然沒有出現在phpinfo()中(例如,當我使用它時未定義的函數oci_connect()),但我要解決這個問題。 –

回答

1

要總括起來,

一件事...NTS假定PHP不作爲Apache模塊運行, 是否正確?你在使用FastCGI嗎? - ÁlvaroGonzález

是要走的路。如果任何人具有相同的煩惱,下面是我的具體步驟:從windows.php.net/download/

  • 的Apache 2.4.18從apachehaus 64

    • PHP 7.0.3 VCl 4 64線程安全的。 COM/cgi-bin目錄/ download.plx
    • Oracle即時客戶端12.1.0.2.0從oracle.com/technetwork/topics/winx64soft-089540.html
    • 64(獲得從pecl.php當前線程安全OCI8 DLL .net/package/oci8,但PHP附帶了它的一個版本 - 與我一起工作)

    將PHP安裝爲Apache模塊。解壓即時客戶端並將其移至您想要的位置。將此位置添加到PATH系統變量。重新啓動你的機器,它應該顯示在phpinfo()的'PATH'下。

    然後,我不得不使PHP extension_dir成爲絕對路徑。所以沒有'ext',而是'C:/ Program Files/php-7.0.3/ext'。只有'ext'設置爲extension_dir,我可以通過'php.exe filename.php'連接到遠程Oracle數據庫。但是Apache會給我錯誤error.log,它找不到DLL。

    如果您選擇保留PHP附帶的oci DLL,則不需要DLL複製。不需要更改/創建比PATH更多的環境變量。

    至少在我的情況下:-)