Как использовать клиент oracle 11.2 с php (xampp) на win7 x64


Я только что установил acutal XAMPP на свой компьютер win7 (x64), чтобы написать несколько PHP-скриптов для подключения к базе данных oracle. У меня также установлен обычный клиент oracle 11.2.0 (ПУТЬ и ORACLE_HOME установлены правильно). Клиент используется для всей моей другой работы без каких-либо проблем.

Когда я пытаюсь подключиться к базе данных oracle, PHP терпит неудачу с Fatal error: Call to undefined function oci_connect() in. Я помню, что мне пришлось включить "oci8-расширения" в моем php.ini, когда я делал то же самое несколько лет назад на ПК x32 WinXP. Но мой нынешний xampp делает нет этих dll в папке php/ext (только php_oci8_12c.dll, которая выдает несколько ошибок неизвестных функций при запуске apache и которая предназначена для oracle 12, а не 11), и php.ini также говорит, что они нужны только для мгновенного клиента.

;extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client

Также этот ТАК называемый вопрос показывает, что использование расширения комментариев с обычным клиентом не будет работать (что я тоже пробовал).

Я пытался найти решение в Google, но все "решения" - это "установить win32 instant client и включить расширение". Но я не могу этого сделать, так как большая часть моей QA-работы требует установленного и настроенного 11.2.0-клиента, а у меня его нет.dll в моей папке php/ext в любом случае

Я также попытался скопировать ociw32.dll из папки client/bin в папку php/ext, но затем apache говорит, что это не PHP-библиотека.

Итак, как я могу разрешить библиотекам PHP oracle использовать oci8 для XAMPP на x64 win7 БЕЗ установки win32 Oracle Instant Client и уничтожения моих текущих настроек?

Редактировать: Я также попробовал выполнить действия, описанные в руководстве по установке PHP: (Сообщение: саманта дот Винсент в gmail dot com), включая изменение моего apache-http.conf, которое также не помогло.

Я также запутался в своем phpinfo()-выводе, как говорится

Configure Command   "--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared"
Author: Community, 2015-01-05

1 answers

Я наконец нашел решение:

Я загрузил фактические библиотеки DLL OCI из "PECL::Пакет::oci8 :: 2.0.8" ( в моем случае 32-битная, потокобезопасная DLL), а затем удалил ; из этой строки

;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client

Я также добавил следующие строки в свой http.conf apache

SetEnv ORACLE_BASE "C:/oracle/"
SetEnv ORACLE_HOME "C:/oracle/product/11.2.0/client_1"  

После этого я перезапустил apache, убедился, что мой псевдоним подключения, вероятно, помещен в мой tsnames.ora, а затем я мог бы использовать oci8-функции без каких-либо проблем.

 5
Author: bish, 2015-01-05 08:44:35