#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 для того же самого.