Как использовать клиент 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"
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-функции без каких-либо проблем.