Автор Тема: Подключение к Oracle  (Прочитано 7224 раз)

Оффлайн keremet

  • Global Moderator
  • ROOT
  • *****
  • Сообщений: 463
  • Репутация: +237/-0
    • Просмотр профиля
    • OpenSolaris
Подключение к Oracle
« : Октябрь 15, 2013, 06:01:07 pm »
Скачать Instant Client  нужной версии (http://www.oracle.com/technetwork/topics/solx86soft-092689.html)
В моем случае: basic-10.2.0.5.0-solaris-x86.zip, sqlplus-10.2.0.5.0-solaris-x86.zip, basiclite-10.2.0.5.0-solaris-x86.zip, jdbc-10.2.0.5.0-solaris-x86.zip, sdk-10.2.0.5.0-solaris-x86.zip
Распаковать все архивы в один каталог (например, /home/keremet/oracle/instantclient_10_2).
Заполнить файл ~/.tnsnames.ora

Первые 2 переменные, чтобы нормально отображались русские буквы

export NLS_LANG=AMERICAN_AMERICA.UTF8
export LANG=ru_RU.UTF-8
export LD_LIBRARY_PATH=/home/keremet/oracle/instantclient_10_2
/home/keremet/oracle/instantclient_10_2/sqlplus user/passwd@server

Оффлайн keremet

  • Global Moderator
  • ROOT
  • *****
  • Сообщений: 463
  • Репутация: +237/-0
    • Просмотр профиля
    • OpenSolaris
Re: Подключение к Oracle
« Ответ #1 : Октябрь 18, 2013, 05:16:57 pm »
Настройка Apache+PHP

1. скачать Oracle instantclient
basic-10.2.0.5.0-solaris-x86.zip      jdbc-10.2.0.5.0-solaris-x86.zip  sqlplus-10.2.0.5.0-solaris-x86.zip
basiclite-10.2.0.5.0-solaris-x86.zip  sdk-10.2.0.5.0-solaris-x86.zip

2.Скомпилить PHP с поддержкой Apache и Oracle
ln -s /home/keremet/oracle/instantclient_10_2//libclntsh.so.10.1 /home/keremet/oracle/instantclient_10_2//libclntsh.so
export LD_LIBRARY_PATH=/home/keremet/oracle/instantclient_10_2/
keremet@openindiana:~/oracle/instantclient_10_2$ sudo cp *.so /usr/lib/
pkg install pkg:/compatibility/ucb
checking for known struct flock definition... configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no
tar xf php-5.5.4.tar.bz2
cd php-5.5.4
CFLAGS="-O2" CPPFLAGS="-O2" ./configure --with-apxs2 -with-oci8=instantclient,/home/keremet/oracle/instantclient_10_2/ --enable-opcache=no


keremet@openindiana:~/compile/php-5.5.4$ make
/bin/sh /home/keremet/compile/php-5.5.4/libtool --silent --preserve-dup-deps --mode=compile cc  -DSSL_EXPERIMENTAL -DSSL_ENGINE -I/usr/apache2/2.2/include  -DSOLARIS2=11 -D_POSIX_PTHREAD_SEMANTICS -mt -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/apr/1.3/include   -I/usr/apr-util/1.3/include -I/usr/include -Isapi/apache2handler/ -I/home/keremet/compile/php-5.5.4/sapi/apache2handler/ -DPHP_ATOM_INC -I/home/keremet/compile/php-5.5.4/include -I/home/keremet/compile/php-5.5.4/main -I/home/keremet/compile/php-5.5.4 -I/home/keremet/compile/php-5.5.4/ext/date/lib -I/home/keremet/compile/php-5.5.4/ext/ereg/regex -I/usr/include/libxml2 -I/home/keremet/oracle/instantclient_10_2//sdk/include -I/home/keremet/compile/php-5.5.4/ext/sqlite3/libsqlite -I/home/keremet/compile/php-5.5.4/TSRM -I/home/keremet/compile/php-5.5.4/Zend  -O2 -D_POSIX_PTHREAD_SEMANTICS  -I/usr/include -O2   -c /home/keremet/compile/php-5.5.4/sapi/apache2handler/mod_php5.c -o sapi/apache2handler/mod_php5.lo
cc1: error: invalid option `t'
make: *** [sapi/apache2handler/mod_php5.lo] Ошибка 1

Убрать -mt. Ниже 4 скорректированных команды
keremet@openindiana:~/compile/php-5.5.4$
/bin/sh /home/keremet/compile/php-5.5.4/libtool --silent --preserve-dup-deps --mode=compile cc  -DSSL_EXPERIMENTAL -DSSL_ENGINE -I/usr/apache2/2.2/include  -DSOLARIS2=11 -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/apr/1.3/include   -I/usr/apr-util/1.3/include -I/usr/include -Isapi/apache2handler/ -I/home/keremet/compile/php-5.5.4/sapi/apache2handler/ -DPHP_ATOM_INC -I/home/keremet/compile/php-5.5.4/include -I/home/keremet/compile/php-5.5.4/main -I/home/keremet/compile/php-5.5.4 -I/home/keremet/compile/php-5.5.4/ext/date/lib -I/home/keremet/compile/php-5.5.4/ext/ereg/regex -I/usr/include/libxml2 -I/home/keremet/oracle/instantclient_10_2//sdk/include -I/home/keremet/compile/php-5.5.4/ext/sqlite3/libsqlite -I/home/keremet/compile/php-5.5.4/TSRM -I/home/keremet/compile/php-5.5.4/Zend  -O2 -D_POSIX_PTHREAD_SEMANTICS  -I/usr/include -O2   -c /home/keremet/compile/php-5.5.4/sapi/apache2handler/mod_php5.c -o sapi/apache2handler/mod_php5.lo

/bin/sh /home/keremet/compile/php-5.5.4/libtool --silent --preserve-dup-deps --mode=compile cc  -DSSL_EXPERIMENTAL -DSSL_ENGINE -I/usr/apache2/2.2/include  -DSOLARIS2=11 -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/apr/1.3/include   -I/usr/apr-util/1.3/include -I/usr/include -Isapi/apache2handler/ -I/home/keremet/compile/php-5.5.4/sapi/apache2handler/ -DPHP_ATOM_INC -I/home/keremet/compile/php-5.5.4/include -I/home/keremet/compile/php-5.5.4/main -I/home/keremet/compile/php-5.5.4 -I/home/keremet/compile/php-5.5.4/ext/date/lib -I/home/keremet/compile/php-5.5.4/ext/ereg/regex -I/usr/include/libxml2 -I/home/keremet/oracle/instantclient_10_2//sdk/include -I/home/keremet/compile/php-5.5.4/ext/sqlite3/libsqlite -I/home/keremet/compile/php-5.5.4/TSRM -I/home/keremet/compile/php-5.5.4/Zend  -O2 -D_POSIX_PTHREAD_SEMANTICS  -I/usr/include -O2   -c /home/keremet/compile/php-5.5.4/sapi/apache2handler/sapi_apache2.c -o sapi/apache2handler/sapi_apache2.lo



/bin/sh /home/keremet/compile/php-5.5.4/libtool --silent --preserve-dup-deps --mode=compile cc  -DSSL_EXPERIMENTAL -DSSL_ENGINE -I/usr/apache2/2.2/include  -DSOLARIS2=11 -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/apr/1.3/include   -I/usr/apr-util/1.3/include -I/usr/include -Isapi/apache2handler/ -I/home/keremet/compile/php-5.5.4/sapi/apache2handler/ -DPHP_ATOM_INC -I/home/keremet/compile/php-5.5.4/include -I/home/keremet/compile/php-5.5.4/main -I/home/keremet/compile/php-5.5.4 -I/home/keremet/compile/php-5.5.4/ext/date/lib -I/home/keremet/compile/php-5.5.4/ext/ereg/regex -I/usr/include/libxml2 -I/home/keremet/oracle/instantclient_10_2//sdk/include -I/home/keremet/compile/php-5.5.4/ext/sqlite3/libsqlite -I/home/keremet/compile/php-5.5.4/TSRM -I/home/keremet/compile/php-5.5.4/Zend  -O2 -D_POSIX_PTHREAD_SEMANTICS  -I/usr/include -O2   -c /home/keremet/compile/php-5.5.4/sapi/apache2handler/apache_config.c -o sapi/apache2handler/apache_config.lo


/bin/sh /home/keremet/compile/php-5.5.4/libtool --silent --preserve-dup-deps --mode=compile cc  -DSSL_EXPERIMENTAL -DSSL_ENGINE -I/usr/apache2/2.2/include  -DSOLARIS2=11 -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/apr/1.3/include   -I/usr/apr-util/1.3/include -I/usr/include -Isapi/apache2handler/ -I/home/keremet/compile/php-5.5.4/sapi/apache2handler/ -DPHP_ATOM_INC -I/home/keremet/compile/php-5.5.4/include -I/home/keremet/compile/php-5.5.4/main -I/home/keremet/compile/php-5.5.4 -I/home/keremet/compile/php-5.5.4/ext/date/lib -I/home/keremet/compile/php-5.5.4/ext/ereg/regex -I/usr/include/libxml2 -I/home/keremet/oracle/instantclient_10_2//sdk/include -I/home/keremet/compile/php-5.5.4/ext/sqlite3/libsqlite -I/home/keremet/compile/php-5.5.4/TSRM -I/home/keremet/compile/php-5.5.4/Zend  -O2 -D_POSIX_PTHREAD_SEMANTICS  -I/usr/include -O2   -c /home/keremet/compile/php-5.5.4/sapi/apache2handler/php_functions.c -o sapi/apache2handler/php_functions.lo


sudo make install

Вот модуль для апача: /usr/apache2/2.2/libexec/libphp5.so
Поставится и заменит текущий автоматически

Заполнить /var/opt/oracle/tnsnames.ora

Скрипт для проверки
<?php
//Должна быть версия 5.5.4
echo 'Текущая версия PHP: ' . phpversion();

// Выводит строку типа '2.0' или ничего, если расширение не подключено
echo phpversion('tidy');
if ($c=OCILogon("user", "passwd", "tnsname")) {
  echo "Successfully connected to Oracle.\n";
  OCILogoff($c);
} else {
  $err = OCIError();
  echo "Oracle Connect Error " . $err[text];
}

?>

Для корректного отображения русских букв надо написать в php-коде:
      putenv("NLS_LANG=AMERICAN_AMERICA.UTF8");
      putenv("LANG=ru_RU.UTF-8");