2016-08-01 5 views
1

Эта тема была задана несколько раз, но каждое решение не работает на моей машине.php_oci8_11g.dll не является действительным приложением Win32

Я пытаюсь подключить Windows 7 с 10G oracle dabatase, но расширение oci не загружается. Вот некоторые факты:

C:\php>php -m

PHP Предупреждение: PHP Startup: Невозможно загрузить динамическую библиотеку, 'C: \ PHP \ вн \ php_oci8_11g.dll' -% 1 не является приложением Win32.

C:\php>php -v

PHP 5.6.19 (cli) (built: Mar 2 2016 20:09:42) 
Copyright (c) 1997-2016 The PHP Group 
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies 
  • 64x архитектура
  • TS VC11

C:\>tnsping localdb

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-AUG-2 
016 22:37:50 

Устранение неисправностей

  • Я использую oci8 2.0.11. Бросил их в ext/ сложен. Остальные расширения загружены довольно хорошо.
  • переменная PATH содержит путь ORACLE_HOME и PHP
  • Просто смотрел на необходимые файлы DLL оракула, и они есть:

    C:\>where oci*

    C:\oracle\product\10.2.0\db_2\BIN\oci.dll 
    C:\oracle\product\10.2.0\db_2\BIN\ocijdbc10.dll 
    C:\oracle\product\10.2.0\db_2\BIN\ociw32.dll 
    
  • Клиент Oracle не требуется в моей стороне, потому что база данных установлена ​​на том же компьютере и устанавливает все необходимые библиотеки

Что еще я делаю отсутствует? Заранее спасибо

+0

Вы заявляете, что PHP - это x64, но какая у вас установка Oracle? «Битность» должна соответствовать. – timclutton

ответ

3

После нескольких месяцев я нашел решение. Рассмотрим следующую инфраструктуру:

  • Windows Server 2012 R2 Standard Edition x64
  • Apache/2.4.18 (Win64) VC11
  • PHP 5.6.19 x86 VC11 TS

Возьмите пристальное внимание когда загрузка Oracle Instant Client:

  • Независимо от того, является ли ваш сервер архивной архитектурой x64 или x86, вы должны загрузить его для 32-разрядных
  • Как вы заметили, PHP скомпилирован в VC11, поэтому вы необходимо скачать OIC с источниками VC11, это можно подтвердить, распакуя загруженный файл и проверить, есть ли там папка vc11.

Обе детали очень важны.Как только я отвечаю обоим требованиям, ошибка ушла. Теперь я могу успешно подключиться к Oracle через PHP.

+0

Похожая проблема, но даже после того, как вы последовали за вашим решением, все равно получили такое же сообщение об ошибке. Тем не менее, я на Windows 10. – cytsunny

 Смежные вопросы

  • Нет связанных вопросов^_^