Я хочу поделиться некоторой информацией о моей установке OCI8 для доступа к базам данных Oracle.
Если у вас есть такие ошибки, как "Запуск PHP: невозможно загрузить динамическую библиотеку oci8.so"
или "проверка совместимости версии библиотеки Oracle Instant Client ... configure: error: Ссылка с libclntsh.so на /opt/oracle/instantclient/libclntsh.so.*.1 не найдена"
или просто хотите установить Quick & Easy OCI8, чтобы установить соединение между вашим php и базой данных Oracle, вы находитесь в нужном месте!
Первые предварительные требования - это рабочая среда apache2 и php7.2 (Ubunti 18.04).
Загрузите базовый пакет (например, Instantclient-basic-linux.x64-12.2.0.1.0.zip) и пакет sdk (Instantclient-sdk-linux.x64-12.2.0.1.0.zip) с веб-сайта Oracle. http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html
Загрузите оба файла на свой веб-сервер, вы можете использовать для этого WinSCP
Разархивируйте оба файла на сервере, в моем случае вы получите новую папку с именем "Instantclient_12_2"
4а. Создать папку назначения
mkdir / opt / oracle
4b. Переместите и переименуйте папку Instantclient
mv Instantclient_12_2 / opt / oracle / Instantclient
4c. Изменить права на папку
chown -R корень: www-data / opt / oracle
apt установить php7.2-dev php-pear build-essential libaio1
ln -s /opt/oracle/instantclient/libclntsh.so.12.1 /opt/oracle/instantclient/libclntsh.so
ln -s /opt/oracle/instantclient/libocci.so.12.1 /opt/oracle/instantclient/libocci.so
7а. Добавить мгновенный клиент в файлы конфигурации ld
эхо / opt / oracle / Instantclient> /etc/ld.so.conf.d/oracle-instantclient.conf
7b. Обновление привязок времени выполнения динамического компоновщика
ldconfig
8а. Теперь установите OCI8 с помощью pecl
pecl установить oci8
8b. Установка OCI8 запрашивает правильную папку
мгновенный клиент, / опт / оракул / мгновенный клиент
9а. Добавьте oci lib в конфигурацию cli php (консоль php)
echo "extension = oci8.so" >> /etc/php/7.2/cli/php.ini
9b. Добавить oci lib в конфигурацию apache php
echo "extension = oci8.so" >> /etc/php/7.2/apache2/php.ini
10а. Задайте переменные окружения для версии cli (после этого вам нужно будет перезагрузить сервер)
echo "LD_LIBRARY_PATH = \" / opt / oracle / Instantclient \ "" >> / etc / environment
echo "ORACLE_HOME = \" / opt / oracle / Instantclient \ "" >> / etc / environment
10б. Установите переменные окружения для версии apache
echo "экспорт LD_LIBRARY_PATH = \" / opt / oracle / Instantclient \ "" >> / etc / apache2 / envvars
echo "экспорт ORACLE_HOME = \" / opt / oracle / Instantclient \ "" >> / etc / apache2 / envvars
перезапуск службы apache2
= ПРИМЕР ПОДКЛЮЧЕНИЯ К PHP =
<?php
// Create connection to Oracle, change HOST IP and SID string!
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 000.000.000.000)(PORT = 1521)))(CONNECT_DATA=(SID=XXX)))";
// Enter here your username (DBUSER) and password!
$conn = oci_connect("DBUSER", "PASSWORD",$db);
if (!$conn) {
$m = oci_error();
echo $m['message']. PHP_EOL;
exit;
}
else {
print "Oracle database connection online". PHP_EOL;
}
?>