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

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

Когда я пытаюсь подключиться к базе данных оракула, 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

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

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

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

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

редактировать: я также пробовал шаги, описанные в PHP: Руководство по установке (сообщение: samantha dot vincent at 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"

person bish    schedule 05.01.2015    source источник


Ответы (2)


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

Я загрузил настоящие библиотеки OCI-DLL с сайта "PECL :: PAckage :: 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.

person bish    schedule 05.01.2015
comment
@bish, не могли бы вы сказать мне, куда вы положили файлы, которые вы скачали? - person Abaij; 25.05.2015
comment
В вашем php/bin-каталоге. - person bish; 25.05.2015
comment
с вашим загруженным без изменений http.conf, это руководство: XAMMP | ORACLE | и PHP.NET - person Virgili Garcia; 28.09.2015
comment
Привет, мне интересно, что делает «SetEnv ORACLE_BASE C:/oracle/»? Это клиент Oracle, а не мгновенный клиент? - person Loupi; 30.10.2015
comment
Я использовал обычный клиент Oracle, а НЕ мгновенный клиент, как сказано в вопросе. - person bish; 30.10.2015
comment
это не работало раньше, тогда что я сделал? я просто скопировал файлы orannzsbb11.dll, oci.dll и oraociei11.dll в c:\windows\system32. и перезапустите apache, и, наконец, он работает..... :) - person cijagani; 20.07.2016

  1. https://pecl.php.net/package/oci8/2.2.0/windows SELECT -> 7.3 Thread Safe (TS) x86 для 32-битных или 7.3 Thread Safe (TS) x64 для 64-битных
  2. Извлеките все файлы и скопируйте в папку C:\xampp\php\ext.
  3. Откройте файл php.ini и напишите следующее: extension=php_oci8.dll
  4. Перезапустите xampp. проверьте свой браузер http://localhost/dashboard/phpinfo.php, если oci8 включен, если не отображается . загрузите из Интернета и скопируйте oci8.dll в папку c:\windows\system32.
  5. Перезапустите xampp
  6. Проверьте в браузере http://localhost/dashboard/phpinfo.php, включен ли oci8. Сделанный!!
person Yvan Serrata    schedule 30.10.2019