Для 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>";
}
?>