'c:/wamp64/bin/php/php7.0.10/ext/php_oci8_12c.dll' - %1 не является допустимым приложением win32

Чтобы получить доступ к удаленной базе данных Oracle из php, мне пришлось активировать расширение php_oci8_12c. Но когда я это делаю, он не появляется в phpinfo(). С другой стороны, я получаю в журналах php сообщение об ошибке:

[13 января 2017 г., 08:39:48 UTC] Предупреждение PHP: запуск PHP: невозможно загрузить динамическую библиотеку «c:/wamp64/bin/php/php7.0.10/ext/php_oci8_12c.dll» — %1 не является Действующее приложение win32

Я использую php 5.6.25 и wampserver 3.0.6 (64 бит). Как я могу решить эту проблему?


person terminator    schedule 13.01.2017    source источник
comment
Похоже, вы смешали 32-битную и 64-битную. Ваш php тоже 64-битный?   -  person Wernfried Domscheit    schedule 13.01.2017
comment
Я установил 64-битный wamp, я думаю, он предоставил мне 64-битный php   -  person terminator    schedule 13.01.2017
comment
Я предполагаю, что вам также необходимо установить клиент Oracle. Вы сделали это (Oracle 12c, тоже 64 бит!)   -  person Wernfried Domscheit    schedule 13.01.2017
comment
Я хотел бы получить доступ к удаленной базе данных oracle 9i 64-bit, а на моем компьютере у меня есть sqlplus 9.2.0.1.0 32-bit   -  person terminator    schedule 13.01.2017
comment
Возможно, для вашего wamp/php требуется клиент Oracle — в этом случае наверняка это должна быть 64-битная версия. Oracle 9i выведен из эксплуатации 15 лет назад, подключение к БД 9i с Клиентом 12c не гарантируется — скорее всего не получится.   -  person Wernfried Domscheit    schedule 13.01.2017
comment
Я только что установил оракул. но теперь у меня есть это сообщение об ошибке при запуске wamp. Точка входа в процедуру OCILobRead2 не может быть расположена в библиотеке динамической компоновки OCI.dll, а затем в php Startup: невозможно загрузить динамическую библиотеку 'c:/wamp/bin/php/php5 .5.12/ext/php_oci8_11g.dll' - указанный модуль не может быть найден ps: я также изменил свою версию wamp на wamp 2.5 32 бит   -  person terminator    schedule 13.01.2017
comment
Я, наконец, нашел, что было не так. Может быть проблема конфликта между клиентами Oracle на моей машине. В любом случае, чтобы решить проблему, я изменил позицию Oracle Instant Client в PATH, чтобы поместить ее в начало цепочки.   -  person terminator    schedule 16.01.2017


Ответы (1)


Что ж, я тоже столкнулся с этой ошибкой и сумел ее исправить.

Прежде чем загружать любую версию клиента Oracle, просто взгляните на свои настройки http://localhost/?phpinfo=1 по адресу < strong>Настроить команду.

Это скажет, какая версия Oracle использовалась для создания вашего сервера WAMP.

WAMP 3.0.6 PHPINFO

На изображении выше показаны две строки:

"--with-pdo-oci=c:\php-sdk\oracle\x64\instantclient_12_1\sdk,shared"
"--with-oci8-12c=c:\php-sdk\oracle\x64\instantclient_12_1\sdk,shared"

Очевидно, скажите нам, что InstantClient использует 64-битную версию.

Существует две версии InstantClient 12.1 x64: 12.1.0.2.0 и 12.1.0.1.0.

Я протестировал версию 12.1.0.2.0 и не смог.
После этого я протестировал старую версию 12.1.0.1.0 и работал.

Загрузите с Instant Client для Microsoft Windows (x64) и распакуйте файлы ниже в "c:\oracle":

  • Instantclient-basic-windows.x64-12.1.0.2.0.zip
  • Instantclient-sqlplus-windows.x64-12.1.0.2.0.zip
  • Instantclient-sdk-windows.x64-12.1.0.2.0.zip

Это создаст следующую папку "C:\Oracle\instantclient_12_1".
Используя "Командную строку Windows" (WIN+R CMD), перейдите в папку выше и выполните SQLPLUS:

  • sqlplus [пользователь]/[пароль]@[хост]:[порт]/[сервис]

Вы должны быть в состоянии подключиться.

Наконец, добавьте папку "C:\Oracle\instantclient_12_1" в переменную среды PATH, поместив ее в крайнее левое место.

Закройте сервер WAMP.

Да, закройте его, потому что переменная среды считывается только во время запуска.
Таким образом, перезапуск служб может завершиться ошибкой, что приведет к неправильному результату.

После перезапуска ваш PHPINFO покажет загруженные OCI8 и PDO_OCI.

OCI8 PDO_OCI

Я надеюсь, что это помогает!

person Luiz Vaz    schedule 15.10.2017
comment
Это следует добавить в руководство на php.net. Отличный ответ, я долго искал это повсюду. Спасибо! - person Raymond Wachaga; 25.07.2018
comment
Большое спасибо! Это то, что сработало и для меня после того, как я попробовал множество других методов. Я использую AppServ в Windows 10. - person Steve Lloyd; 02.08.2018
comment
Серьезно удивительно. Да, это сработало и для меня. Если вы используете XAMPP по умолчанию для 64-разрядной версии (по состоянию на 13 ноября 2019 г.), вам необходимо использовать 64-разрядную версию Instant Client 12.10.10 (в отличие от версии 12.10.20), которая официально не перечислены на странице загрузки. Я отредактировал URL-адрес и нашел его здесь: download.oracle.com/otn/nt/instantclient/121010/ - person ZettaGeek; 14.11.2019