Как подключиться к базе данных Oracle? - PullRequest
4 голосов
/ 18 сентября 2008

Как вы подключаетесь к Oracle, используя PHP на MAC OS X?

Ответы [ 5 ]

2 голосов
/ 18 сентября 2008

Уровень абстракции PDO можно использовать для подключения к БД Oracle и выполнения действий с ней. Вот статья о том, как использовать PDO с Oracle с веб-сайта Oracle.

Также можно использовать OCI .

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

2 голосов
/ 18 сентября 2008

Я бы подумал, что OCI - это путь. PHP имеет модуль для него.

1 голос
/ 10 марта 2011

Для InstantClient на OSX 10,6 64bit выполните следующие действия:

скачайте мгновенные клиентские библиотеки и sdk, поместите все это в папку. Убедитесь, что вы получите 64-битную библиотеку, если вы работаете на 64-битной машине, 32-битная не будет работать! - сначала тест с sqlplus

создайте его, если он не существует

sudo vi /etc/launchd.conf

и добавьте к следующему файлу (со своим собственным путем!)

setenv DYLD_LIBRARY_PATH /usr/oracle_instantClient64

В этот момент вам, вероятно, нужно перезапустить систему, чтобы launchd прошел путь к apache, чтобы выбрать путь, или посмотрите, работает ли перезапуск launchd, хотя у меня есть ощущение, что в любом случае перезапустит вашу систему!

Вы должны добавить "extension = oci8.so" в php.ini

sudo vi /etc/php.ini

если этот файл не существует, скопируйте php.ini.default

sudo cp /etc/php.ini.default /etc/php.ini

затем добавьте вышеупомянутое расширение, внизу файла есть раздел с множеством расширений, поместите его куда-нибудь

oci требует символьной ссылки библиотеки, так что

sudo ln -s $DYLD_LIBRARY_PATH/libclntsh.dylib.10.1 $DYLD_LIBRARY_PATH/libclntsh.dylib

Также есть несколько странных жестко закодированных ссылок на библиотеку в двоичных файлах Oracle, так что исправьте это

mkdir -p /b/227/rdbms/

Он ищет только библиотеки оракула, так что связывайте его обратно

ln -s /usr/oracle_instantClient64/ /b/227/rdbms/lib

теперь установите oci8 из репозитория груши. Если вы установили Snow Leopard OSX 10.6 без обновления, у вас могут возникнуть проблемы с грушей и pecl. Если это так, вам нужно будет сначала установить грушу. см .: https://discussions.apple.com/thread/2602597?start=0&tstart=0

sudo pecl install oci8

СОВЕТ: не используйте автоопределение, укажите путь мгновенного клиента при запросе ..

instantclient,/usr/oracle_instantClient64

перезагрузить apache

sudo apachectl graceful

проверить, перейдя по URL-адресу в браузере или вы можете вызвать файл прямо в командной строке

php index.php

вот и все используйте следующее в качестве тестового файла ..

<?php 

$dbHost = "localhostOrDatabaseURL";
$dbHostPort="1521";
$dbServiceName = "servicename";
$usr = "username";
$pswd = "password";
$dbConnStr = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
            (HOST=".$dbHost.")(PORT=".$dbHostPort."))
            (CONNECT_DATA=(SERVICE_NAME=".$dbServiceName.")))";


if(!$dbConn = oci_connect($usr,$pswd,$dbConnStr)){
$err = oci_error();
trigger_error('Could not establish a connection: ' . $err['message'], E_USER_ERROR);
};

$strSQL = "SELECT SYSDATE FROM DUAL";

$stmt = oci_parse($dbConn,$strSQL);
if ( ! oci_execute($stmt) ){
$err = oci_error($stmt);
trigger_error('Query failed: ' . $err['message'], E_USER_ERROR);
};

while(oci_fetch($stmt)){
    $rslt = oci_result($stmt, 1); print "<h3>query returned: ".$rslt."</h3>";
}
?>
0 голосов
/ 18 сентября 2008

При подключении к базе данных oracle не должно быть проблем с интерфейсом oci, например, с помощью oci_connect ().

Дополнительные примеры здесь: http://php.net/manual/en/oci8.setup.php

Но я не понимаю, что означает замечание MAC OS X - у вас локально работает apache?

Надеюсь, это поможет, Бастиан

0 голосов
/ 18 сентября 2008

Я не знаю ни Mac, ни PHP, но обычно вам нужно установить инструменты Oracle Client (Instant Client).

http://www.oracle.com/technology/tech/oci/instantclient/index.html

После установки вы изменяете файл TNSNAMES.ORA, чтобы он указывал на сервер и имя экземпляра базы данных Oracle.

Затем вы можете использовать PHP "соединение с базой данных" (извините), чтобы создать соединение и запустить ваши операторы SQL.

Используйте клиент SQL * PLUS для проверки работоспособности соединения:

т.

c:> SQLPLUS

CONNECT scott/tiger@mydatabase

Если TNSNAMES.ORA верен, вы должны установить соединение или хотя бы «неверное имя пользователя / пароль», которое подтверждает, что вы получили связь с экземпляром Oracle.

Если вы получаете ошибки TNS-12521 (?), Значит, ваш TNSNAMES.ORA неверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...