php: загрузка драйвера oracle выдает ошибку "Не удается загрузить динамическую библиотеку - Не удалось найти указанную процедуру".


Похоже, у меня странная проблема с PHP.

Я перенес кучу программного обеспечения с одного сервера на другой. На сервере некоторые сценарии устанавливают соединение с Oracle, поэтому для установления соединения устанавливается клиент oracle и создается файл tnsnames. Соединение с sql*plus работает.

Некоторые сценарии используют PDO, поэтому для этого я включил extension=php_pdo_oci.dll в php.ini. Эти сценарии работают как заклинание.

Некоторые другие сценарии используют функции как oci_connect, и для них требуется расширение, например php_oci8.dll . С помощью xammp (который я использую в качестве пакета apache/php/mysql) php_oci8_12c.dll доставлено, поэтому я подумал, что продление будет адекватным.

При запуске сервера я вижу эти ошибки в журнале ошибок php:

Unable to load dynamic library 'C:\xampp\php\ext\php_oci8_12c.dll' - The specified procedure could not be found.

Файл находится в C:\xampp\php\ext \, так что это не должно быть проблемой. Другие расширения, которые находятся в том же каталоге, подключаются без каких-либо проблем. Я также пытался загрузить php_oci8.dll, который я подобрал со старого сервера, но получил точно такую же проблему.

Некоторые ответы, которые я нашел на подобные проблемы, я безуспешно пытался найти: - копирование библиотеки dll в c:\windows\system - добавление php ext dir в переменную системного ПУТИ - добавление клиента oracle в переменную системного ПУТИ (уже была там)

Версии программного обеспечения, которые я использую:

  • ОПЕРАЦИОННАЯ система: Windows 2012 R2 x64
  • PHP: 5.6.3
  • База данных Oracle: 11.2.0.4.0

Есть идеи?

Author: ErikL, 2015-06-11

2 answers

Похоже, я понял это и могу ответить на свой собственный вопрос. Похоже, что XAMPP поставляет неподходящий ddl с их дистрибутивом. Правильные и самые последние библиотеки DLL oci8 можно загрузить здесь во всех возможных вариантах: http://windows.php.net/downloads/pecl/releases/oci8/2.0.8 /. Как только я нашел правильный вариант, он сработал как заклинание.

 6
Author: ErikL, 2015-06-11 13:40:21

XAMPP поставляется с PHP, скомпилированным с потокобезопасным, поэтому вам нужно загрузить файл из этого каталога:

Http://windows.php.net/downloads/pecl/releases/oci8/2.0.8/ ...

Перед тем, как вставить 3 библиотеки DLL в C:\xampp\php\ext *, добавьте ".старый*" к каждому файлу. Убедитесь, что вы включили хорошую библиотеку DLL в соответствии с вашей версией базы данных Oracle в файле php.ini. Наконец, Перезапустите Apache.

 0
Author: Welisson Carlos Dias, 2017-07-31 15:36:56