Я только что установил точный XAMPP на свой ПК win7 (x64), чтобы написать несколько сценариев PHP для подключения к оракулу БД. У меня также установлен нормальный клиент Oracle 11.2.0 (PATH и ORACLE_HOME установлены правильно). Клиент используется для всей моей другой работы без каких-либо проблем.
Когда я пытаюсь подключиться к оракулу БД PHP не удается с Fatal error: Call to undefined function oci_connect() in
, Я помню, что мне пришлось включить «oci8-extensions» в моем php.ini, когда я делал то же самое несколько лет назад на x32 winXP PC.
Но мой текущий 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 и включить расширение». Но я не могу этого сделать, так как большая часть моей QA-работы требует установленного и настроенного 11.2.0-клиента, и у меня нет .dll в моей папке php / ext в любом случае
Я также пытался скопировать ociw32.dll из папки client / bin в папку php / ext, но тогда apache говорит, что это не PHP-библиотека.
Итак, как я могу включить библиотеки Oracle 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"
Я наконец нашел решение:
Я скачал актуальные 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-функции без каких-либо проблем.
Других решений пока нет …