Как настроить Oracle Instant Client с XAMPP в macOS Mojave?

#php #oracle #terminal #xampp

#php #Oracle #терминал #xampp

Вопрос:

Я использую macOS и успешно установил и настроил XAMPP в своей системе. Но проблема в том, что я хочу подключиться к базе данных Oracle с помощью простого синтаксиса PHP, как показано ниже:

 $conn = oci_connect('xx', 'xx', '123.123.xxx.x/xxxx');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

  

Но я получаю эту ошибку при запуске страницы

 Call to undefined function oci_connect()
  

После прочтения какой-то статьи я обнаружил, что мне нужно установить oracle instant client, но я действительно не знаю, как загрузить какую версию, а затем куда распаковать файлы в папке xampp. Я действительно новичок в этой области.

Ответ №1:

Это то, что я сделал в macOS Mojave. Я использовал собственный установщик XAMPP 7.4.9 от xampp-osx-7.4.9-0- installer.dmg. Я выполнил базовую установку с выбранным параметром Файлы разработчика — это было по умолчанию.

Похоже, что в XAMPP для macOS не встроено расширение OCI8. (Я заметил установку виртуальной машины XAMPP из xampp-osx-7.4.9-0- у vm.dmg также не было расширения OCI8, но я с ним еще не играл.)

К сожалению, «очевидный» метод установки OCI8 с помощью pecl команды не позволяет правильно найти нужную версию PHP. Например. запуск:

 sudo /Applications/XAMPP/xamppfiles/bin/pecl install oci8
  

и отвечая:

 instantclient,/Applications/XAMPP/xamppfiles/lib/instantclient-11.2.0.3.0/
  

сбой с checking PHP version... Unknown option: n . Конфигурация PECL выглядела нормально, но, должно быть, произошел какой-то конфликт с родной версией PHP.

В любом случае, немного более длительная ручная установка OCI8 работает. Инструкции приведены ниже.

  • Я предпочитаю использовать более свежий Instant Client, поэтому загрузите последние пакеты Instant Client Basic и SDK отсюда и распакуйте их:

     cd $HOME/Downloads
    curl -O https://download.oracle.com/otn_software/mac/instantclient/instantclient-basic-macos.zip
    curl -O https://download.oracle.com/otn_software/mac/instantclient/instantclient-sdk-macos.zip
      
  • Извлеките Instant Client (замените путь к каталогу загрузки):

     cd /Applications/XAMPP/xamppfiles/lib
    sudo unzip /Users/cjones/Downloads/instantclient-basic-macos.zip
    sudo unzip /Users/cjones/Downloads/instantclient-sdk-macos.zip
      
  • При желании вы можете выполнить некоторую очистку. Избавьтесь от старого Instant Client:

     sudo rm -rf /Applications/XAMPP/xamppfiles/lib/instantclient-11.2.0.3.0
      

    и удалите новые библиотеки, которые не нужны OCI8:

     sudo rm -f /Applications/XAMPP/xamppfiles/lib/instantclient_19_3/{*jdbc*,*occi*,*mysql*,*jar,uidrvci,genezi,adrci}
      
  • Загрузите расширение OCI8 с PECLи
    извлеките его:

     cd $HOME/Downloads
    curl -O https://pecl.php.net/get/oci8-2.2.0.tgz
    tar -xzf oci8-2.2.0.tgz
      
  • Соберите и установите OCI8. Вам понадобится какой-то доступный компилятор; У меня установлен XCode:

     cd oci8-2.2.0
    /Applications/XAMPP/xamppfiles/bin/phpize
    ./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config --with-oci8=shared,instantclient,/Applications/XAMPP/xamppfiles/lib/instantclient_19_3
    make
    sudo make install
      
  • Затем сообщите XAMPP, чтобы включить расширение:

     sudo /Applications/XAMPP/xamppfiles/xampp oci8
      

    В командной строке введите путь к каталогу Instant Client /Applications/XAMPP/xamppfiles/lib/instantclient_19_3 , например:

     Please enter the path to your Oracle or Instant Client installation:
    [/Applications/XAMPP/xamppfiles/lib/instantclient-11.2.0.3.0] /Applications/XAMPP/xamppfiles/lib/instantclient_19_3
    installing symlink...
    patching php.ini...
    OCI8 add-on activation likely successful.
    XAMPP: Stopping Apache...ok.
    XAMPP: Starting Apache...ok.
      
  • Теперь, когда вы проверяете http://localhost/dashboard/phpinfo.php вы должны увидеть раздел OCI8.

Возможно, вас заинтересует, как «запустить» Oracle DB в macOS, что можно сделать в виртуальной машине VirtualBox, например:https://blogs.oracle.com/opal/the-easiest-way-to-install-oracle-database-on-apple-mac-os-x. Другие люди используют контейнер Docker для того же самого.