Использование php 7.3.4 64bit с 64-битным oracle-клиентом и php 7.3.4 32bit с 32-битным oracle-клиентом на том же сервере - PullRequest
1 голос
/ 24 мая 2019

У нас есть 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.

1 Ответ

0 голосов
/ 24 мая 2019

Проблема решена.

Все было правильно, но программа настройки оракула забыла правильные окна прямо для папки clientx64.

На clientx86 группа «прошедший проверку» (на немецком языке: Authentifizierter Benutzer) имеет полный доступ, тогда как clientx64 не имеет этой группы.

После добавления группы и предоставления ей полного доступа к папке clientx64 все работает. Нет необходимости переключать записи в переменной PATH. PHP пытается загрузить первый элемент и после сбоя загружает второй элемент в переменной PATH.

Так что все работает!

...