PHP, IIS, Oracle (OCI) не работает

0

Мы переносимся с Windows SBS 2011 на Windows Server 2012 R2.

У нас есть внутренний веб-сайт, который подключается к нашей базе данных Oracle с помощью PHP.

Я пытаюсь перенести это на новый сервер, и до сих пор у меня есть:

  1. Установленная роль сервера IIS
  2. Установленный PHP
  3. Загружен Oracle Instant Client в C:\instantclient
  4. Добавлен C:\instantclient в системную переменную PATH
  5. Добавил php_oci8.dll в php.ini и проверил, что PHP на самом деле использует этот php.ini
  6. Перезагруженный сервер

Я все еще получаю сообщения об ошибках, такие как команды oci_, которые не распознаются и т.д.

Я потерялся. Я искал в Интернете, и инструкции соответствуют тому, что я сделал из памяти.

Я не нашел ни одной вещи в Интернете, которую я еще не сделал.

  • 0
    Так phpinfo() выводит список oci8?
  • 0
    @ Махавити нет :-(
Показать ещё 4 комментария
Теги:
iis
windows-server
oci

2 ответа

1
Лучший ответ

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

C:\instantclient\bin

Чтобы проверить, доступны ли DLL файлы в пути, введите where oci*.dll в командной строке. Он должен вернуть список совпадающих файлов.

Кроме того, помните, что только потому, что ваша учетная запись может видеть файлы DLL, не означает, что IIS/PHP могут. Это выполняется под другой учетной записью, которая может не иметь разрешения на доступ к файлам. Проверьте свой журнал ошибок IIS и файл PHP php_errors.log для получения каких-либо конкретных сообщений об ошибках.


редактировать

После довольно продолжительного общения проблема была решена:

  • Обновление InstantClient с 10.1.0.5 до 10.2.0.5 (как указано в требованиях к модулю: в Windows для DLL php_oci8 нужны клиентские библиотеки Oracle от версии 10gR2 или выше).
  • Добавление копии msvcr71.dll в папку InstantClient.
  • Загрузка и настройка PHP вручную из php.net вместо использования PHP Manager для IIS.
  • Убедитесь, что переменная окружения Path правильно указана на папки InstantClient и PHP.
  • 0
    В моем Мгновенном клиенте нет \bin . Единственные ошибки PHP в том, что такие команды, как oci_connect , не найдены.
  • 0
    Обычное поведение, когда OCI не может быть загружен - PHP регистрирует ошибку, такую как PHP Startup: Unable to load dynamic library 'php_oci8_11g.dll' - The specified module could not be found. , Это определенно скажет вам, что есть ошибка запуска. Вы подтвердили, что файлы oci*.dll доступны по пути, и что пользователь IIS может получить к ним доступ?
Показать ещё 5 комментариев
0

попробуй это:

extension = php_oci8_12c.dll (вместо php_oci8.dll) - это то, что я использую, и вы, вероятно, загрузили тот же мгновенный клиент, что и я.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню