У нас есть IIS в нашем стандарте Windows Server 2016, который использует через fast cgi php 7.3.4 32bit.
Для создания соединения с базой данных oracle 12cR1 на другом сервере мы используем php_oci8_12c.dll и клиент oracle 12.1.0 32bit.
Это работает фантастически. Теперь мы хотим перейти на 64-битную версию php, но для некоторых старых проектов нам все еще нужен 32-битный клиент php и oracle.
Итак, мы делаем следующее:
1. Удалите клиент Oracle
2. Установите 64-битный клиент oracle 12.1.0 (тип установки: администрация) в C:\Oracle\product\12.1.0\client_x64
3. Перезагрузите сервер
4. Настройте сетевой менеджер
5. Установите 32-разрядный клиент oracle 12.1.0 (тип установки: администрация) в C:\Oracle\product\12.1.0\client_x86
4. Перезагрузите сервер
5. Настройте сетевой менеджер
6. Скачать php 7.3.4 64 bit с 64-битными расширениями
Теперь у нас есть две папки php:
C:\php7_3_4_x86
C:\php7_3_4_x64
В настоящее время IIS использует C: \ php7_3_4_x86 \ php-cgi.exe и 32-битный клиент Oracle, поскольку его последний установленный клиент и путь являются первым из всех путей в переменной PATH.
Теперь мы хотим переключиться на временную 64-битную. Итак, мы попробуем следующие шаги:
1. Измените обработчик IIS на C: \ php7_3_4_x64 \ php-cgi.exe
2. Поменяйте местами путь к клиентам Oracle в переменной окружения PATH. Теперь его: C:\Oracle\product\12.1.0\client_x64;C:\Oracle\product\12.1.0\client_x86;[...]
3. Перезагрузите сервер
После перезагрузки мы пытаемся открыть php-файл в браузере, но получаем следующее сообщение:
Call to undefined function oci_connect
Если мы поместим файл oci.dll из C:\Oracle\product\12.1.0\client_x64\BIN
прямо в C:\php7_3_4_x64
, он загрузит файл. Поэтому мы считаем, что он не может найти 64-битный клиент.
Мы также пробуем метод с созданием ссылки в C: \ Windows \ system32 / SYSWOW64, но это не работает. Та же ошибка.
Что мы могли сделать? Нам нужна возможность переключения между 32- и 64-битным php + oracle.