Установка
 
 
  Установка OCI8 из PECL
  
   Модуль OCI8 может быть включён в текущую установку PHP как
   автоматически, так и вручную с помощью
   » PECL.
  
  
   
    - 
     
      Если ваш компьютер находится за файерволом, установите прокси для
      PEAR, например:
      
       
- 
     
      Запустите
      
       
      Для PHP 7, используйте pecl install oci8-2.2.0
 
      При запросе введите либо значение $ORACLE_HOME, либоinstantclient,/path/to/instant/client/lib.
 
      Обратите внимание: Не вводите имя переменной, такое как
      $ORACLE_HOMEили$HOMEт.к. она не будет развёрнута. Вместо этого, введите полный путь. Например/opt/oracle/product/19c/dbhome_1илиinstantclient,/Users/myname/Downloads/instantclient_19_8.
 
- 
     
      Ошибка oci8_dtrace_gen.h: No such file or
      directoryозначает, что PHP был собран с поддержкой
      DTrace Dynamic Tracing.
      В таком случае устанавливайте так:
 
       
- 
    
     Добавьте в php.ini следующую строку:
     
      
     Убедитесь, что oci8.so установлен в директорию,
     заданную в директиве extension_dir
     файла php.ini.
     
 
 
  Установка OCI8 из PECL с помощью phpize
  
   Если по каким-то причинам нет возможности воспользоваться командой
   pecl, можно самостоятельно загрузить пакет
   с сайта » PECL.
   Например oci8-3.0.0.tgz.
  
  
   
    - 
     
      Разархивируйте пакет:
      
       
- 
     
      Подготовьте его:
      
       
- 
     
      Сконфигурируйте используя
      $ORACLE_HOMEили Instant Client
 
       
     or
     
      
- 
    
     Проинсталлируйте:
     
      
- 
    
     Ошибка oci8_dtrace_gen.h: No such file or
     directoryозначает, что PHP был собран с поддержкой
     DTrace Dynamic Tracing.
     В таком случае перезапуститеconfigureиmake, предварительно установив переменную окружения:
 
      
- 
    
     Добавьте в php.ini следующую строку:
     
      
     Убедитесь, что oci8.so установлен в директорию,
     заданную в директиве extension_dir
     файла php.ini.
     
 
 
  Установка OCI8 в виде подгружаемого (shared) модуля во время сборки PHP
  
   Указание опции конфигурации shared позволяет собрать
   OCI8 в виде динамически подгружаемой библиотеки. Сборка в виде
   подгружаемого модуля позволяет легко обновлять OCI8 без пересборки
   всего PHP.
  
  
   Соберите OCI8 с помощью одной из следующих опций.
  
  
   
    - 
     
      При использовании бесплатных библиотек
      » 
       Oracle Instant Client:
      
       
      Если Instant Client 12.2 (или более ранний) установлен из ZIP-архива, не
      забудьте в первую очередь создать
      символическую ссылку на библиотеку, например, так:
      ln -s libclntsh.so.12.1 libclntsh.so.
 
      Если Oracle Instant Client был установлен с помощью RPM, команда
      конфигурации будет выглядеть так:
      
       
      Например, --with-oci8=shared,instantclient,/usr/lib/oracle/19.9/client/lib
      
- 
     
      При использовании базы данных Oracle database или полной установке
      Oracle Client:
      
       
     Убедитесь, что пользователь, под которым запущен веб-сервер,
     (nobody,www) имеет доступ
     к библиотекам, файлам инициализации и
     tnsnames.ora (если используется) в папке$ORACLE_HOME. При использовании Oracle
     10gR2, может понадобиться запуск утилиты
     $ORACLE_HOME/install/changePerm.sh для
     получения доступа к этой папке.
 
  После настройки следуйте обычной процедуре сборки PHP, например,
  make install, после чего будет создано
  подгружаемая библиотека oci8.so. Возможно, вам
  потребуется вручную перенести её в папку модулей PHP, указанную
  опцией extension_dir вашего
  php.ini.
 
 
  Для завершения установки OCI8 добавьте следующую строку в php.ini:
 
 
  
 
  
 
  Установка OCI8 в виде статически скомпилированного модуля
  
   Сборка PHP со статическим подключением OCI8, используя одну из следующих конфигурационных опций.
  
  
   
  
  
   После настройки следуйте обычной процедуре установки PHP, например,
   make install.  После успешной сборки нет необходимости
   добавлять oci8.so в файл php.ini.
   Никаких дополнительных шагов сборки больше не требуется.
  
  
 
  Установка OCI8 в Windows
  
   Модуль OCI8 можно добавить в PHP с помощью библиотек из репозитория
   » PECL или из
   директории ext, содержащейся в вашей инсталляции PHP.
  
  
   Для библиотек Oracle 12c (и выше), раскомментируйте
   соответствующую строку в php.ini: extension=php_oci8_12c.dll,
   extension=php_oci8_11g.dll
   или extension=php_oci8.dll. Единовременно можно использовать только
   одну из этих библиотек. Более новые библиотеки могут содержать более продвинутый
   функционал. Состав доступных библиотек может меняться в зависимости от версии PHP.
   Убедитесь, что extension_dir
   указывает на директорию, содержащую библиотеки модулей PHP.
  
  
   При использовании Instant Client, установите системную переменную
   окружения PATH на папку с библиотекой
   Oracle.
  
  
 
  Установка окружения Oracle
  
   Перед использованием данного модуля, убедитесь, что
   переменные окружения Oracle правильно настроены для пользователя,
   под которым работает веб-сервер. Если ваш веб-сервер автоматически
   стартует при загрузке, то убедитесь, что окружение при загрузке
   также настроено корректно.
  
  Замечание: 
   
    Не устанавливайте переменные окружения Oracle через
    putenv() в PHP-скрипте, потому что библиотеки
    Oracle могут быть загружены и проинициализированы до запуска
    вашего скрипта. Переменные, установленные через
    putenv() могут затем вызывать конфликты, падения
    и прочее непредсказуемое поведение. Некоторые функции могут работать,
    в то время как другие давать мелкие ошибки. Необходимо устанавливать
    эти переменные до запуска веб-сервера.
   
  
  
   В Red Hat Linux и его вариантах, экспортируйте переменные в конце файла
   /etc/sysconfig/httpd. Другие системы с
   Apache 2 могут использовать скрипт envvars
   из папки bin в дистрибутиве Apache. Третьим вариантом
   является директива Apache SetEnv в файле
   httpd.conf, на каких-то системах она может работать,
   однако, известно, что на некоторых её недостаточно.
  
  
   Чтобы удостовериться в корректной настройке переменных окружения,
   используйте функцию phpinfo() и проверьте, что раздел
   Environment (не Apache
   Environment) содержит ожидаемые переменные.
  
  
   Следующая таблица содержит переменные, которые могут вам потребоваться.
   За подробностями обо всех доступных переменных обращайтесь к документации
   Oracle.
   
    Общие переменные окружения Oracle
    
     
      
       | Название | Цель | 
     
     
      
       | ORACLE_HOME | Указывает на папку, с полностью установленной базой данных
        Oracle. Не устанавливайте эту переменную при использовании
        Oracle Instant Client, т.к. в этом нет необходимости и может
        вызвать проблемы при установке. | 
      
       | ORACLE_SID | Содержит имя базы данных на локальной машине, к которой
        идёт подключение. Нет необходимости устанавливать эту переменную
        при использовании Oracle Instant Client, или всегда передавать
        в параметрах соединения в функцию
        oci_connect(). | 
      
       | LD_LIBRARY_PATH | Установите эту переменную (или её эквивалент на используемой
        платформе, например, LIBPATHилиSHLIB_PATH) в местоположение библиотек
        Oracle, например, $ORACLE_HOME/lib или
        /usr/lib/oracle/18.5/client/lib. Обратите внимание,
        что для ZIP архивов Instant Client в Linux более надёжно использовать
        ldconfig. Обратитесь к инструкции по установке
        Instant Client. Для RPM пакетов Instant Client 19 (и старше),ldconfig, будет запущен автоматически. Кто-то используетLD_PRELOADвместоLD_LIBRARY_PATH. | 
      
       | NLS_LANG | Это основная переменная, используемая для указания
        кодировки и настроек глобализации в библиотеках Oracle. | 
      
       | ORA_SDTZ | Устанавливает часовой пояс сессии Oracle. | 
      
       | TNS_ADMIN | Содержит папку, в которой хранятся конфигурационные файлы
        Oracle Net Services, такие как tnsnames.ora
        и sqlnet.ora. В ней нет необходимости, если
        строка соединения в функции oci_connect()
        использует синтаксис Easy Connect, такой как, например, localhost/XE.  В ней также нет необходимости, если
        сетевые конфигурационные файлы содержатся в местах хранения по умолчанию,
        таких как
        /usr/lib/oracle/VERSION/client/lib/network/admin,
        $ORACLE_HOME/network/admin или
        /etc. | 
     
    
   
   Менее используемые переменные окружения Oracle включают в себя
   
TWO_TASK, 
ORA_TZFILE, а также
   различные установки глобализации Oracle наподобие переменных
   
NLS* и 
ORA_NLS_*.
  
 
 
 
  Решение проблем
  
   Самой частой проблемой при установке OCI8 является неправильная
   установка окружения Oracle. Обычно это выражается в проблеме при
   использовании функций oci_connect() или
   oci_pconnect(). Ошибка может проявляться в
   виде ошибок PHP, например, Call to undefined function
   oci_connect(), ошибок Oracle, таких как ORA-12705,
   или даже крушения Apache. Проверьте лог-файлы Apache на наличие
   ошибок запуска и вышеописанные разделы для разрешения этой проблемы.
  
  
   Несмотря на то, что сетевые ошибки, наподобие ORA-12154 или
   ORA-12514 сигнализируют об ошибке в именовании или конфигурации сети
   Oracle, реальной причиной может быть некорректно установленное
   окружение PHP, из-за чего библиотеки Oracle не могут найти
   конфигурационный файл tnsnames.ora.
  
  
   В Windows, использование нескольких версий Oracle на одной машине
   может легко вызвать их конфликты, которых можно избежать
   при соблюдении особых мер предосторожности, предусматривающих, что
   PHP использует корректную версию Oracle.
  
  
   Утилита, помогающая определить искомые и загруженные в итоге библиотеки,
   может помочь в случае проблем при отсутствующих или конфликтующих
   библиотеках, особенно в Windows.
  
  Замечание: 
   Если веб-сервер не стартует или падает при старте
   
    Проверьте, что Apache собран с библиотекой pthread:
   
   
    
   
   
    Если libpthread нет в списке, переустановите Apache:
   
   
    
   
   
    Имейте в виду, что на некоторых системах, наподобие UnixWare,
    libpthread называется libthread. Таким образом, PHP и Apache должны быть
    настроены с помощью EXTRA_LIBS=-lthread.