Как подключить PHP 7.x к базе данных Oracle на RedHat/CentOS?

Я изо всех сил пытаюсь подключить свое PHP-приложение к базе данных Oracle. Я пробовал несколько вариантов за последнюю неделю, но безуспешно.

Мне удалось установить расширение oci8, но функция oci_connect не распознается.

Пожалуйста помогите.

RedHat Enterprise Linux 7.6
PHP: 7.3
Oracle: 12c


person DrBorrow    schedule 16.06.2019    source источник


Ответы (2)


Обновление для последней версии Oracle Instant Client версии 19.3 для PHP-OCI8:

>> wget http://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm
>> wget http://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm
>> wget http://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient19.3-jdbc-19.3.0.0.0-1.x86_64.rpm
>> wget http://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm

>> sudo yum localinstall oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm oracle-instantclient19.3-jdbc-19.3.0.0.0-1.x86_64.rpm oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm

// create symbolic link
eu-onesead-d001 ~]# sudo sh -c "echo /usr/lib/oracle/19.3/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
eu-onesead-d001 ~]# sudo ldconfig

Перезагрузите сервер

Чтобы проверить соединение, я создал файл php, который загружаю на сервер и проверяю через браузер. ПРИМЕЧАНИЕ: вам, очевидно, следует проявить соответствующую осторожность и удалить файл после тестирования:

<?php
echo "Ensure you have restarted the server if you have installed any new extensions!";
echo "<br>Attempting Oracle db connection...";

// this will open the oracle extension and execute a connection
try {
$conn = oci_connect(
    "username_goes_here",
    "password_goes_here",
    "//oracle_server_address_goes_here/sid_goes_here");

echo "<br>OCI Connect extension found.. opening connnection...";

if (!$conn) {
    echo "<br>Function 'oci_connect' found and working but cannot connect to Oracle: <br>";
    $m = oci_error();
    echo $m['message'], "\n";
    exit;
} else {
    echo "<br>SUCCESS: Connected to Oracle!";
}
} catch (Exception $e) {
    echo $e->getMessage();
}

// Close the Oracle connection
oci_close($conn);
echo "<br>Connection closed";
echo "<br>For security, please delete this file off the server";
person DrBorrow    schedule 30.07.2020

person    schedule
comment
Имейте в виду, что следующие версии будут использовать Oracle Client 19.3. rpm -qi php-oci8 предоставляет эту информацию. - person Remi Collet; 17.06.2019