2013-07-18 2 views
0

Я пытаюсь подключиться к Oracle 11gR2 Xe на сервере Ubuntu 13 с другого компьютера в сети через PHP. Я использую процесс установки и примеры вытекало из oci_connect, как здесь:Подключение к Oracle 11gR2 XE на сервере Ubuntu 13 через PHP

<?php 
query_cities(); 
function query_cities() { 
if { 
$c = oci_connect("hr", "hr", "localhost:1521/XE"); 
; 
} else { 
echo "No connection"; } 
?> 

или другой пример, как:

$c = oci_connect("hr", "hr", "192.168.1.33:1521/XE"); 

Я уже включен удаленное подключение в БД через Sqlplus

SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); 

и я разблокировал пользователя HR

SQL> ALTER USER hr ACCOUNT UNLOCK; 

, но я могу только найти соединение по протоколу IPv6 в сети с SQL Developer, как NetStat:

tcp6 0 0 192.168.1.33:1521 192.168.1.2:57563 ESTABLISHED 14843/oracleXE

tcp6 0 0 192.168.1.33:1521 192.168.1.2:59314 ESTABLISHED 15665/oracleXE

не из моего браузера, а их нет на tcp IPv4. Окно браузера остается белым. Никакой реакции, не отвечает и не появляется сообщение об ошибке. Если это связано с тем, что IP-адрес TNSLR активен только по протоколу IPv6 или не соответствует формулам oci_connect, это достаточно хорошо или мне не хватает других?

Я был бы признателен за любую помощь по этим вопросам

+0

Не тестируйте в окне браузера. По умолчанию все ошибки приведут к пустой странице. Вы должны вернуться к журналам ошибок, чтобы увидеть ошибку. Это то, что вы видите - ошибка в журналах ошибок. Я ожидаю, что вы не установили или не включили oci8 в PHP. – kainaw

+0

Я смущен, чтобы видеть соединения tcp6 с адресами IPv4 из netstat. Когда это происходит? – Dubu

+0

О протоколе IPv6: eth0 Link encap: Ethernet HWaddr 1c: 6f: 65: d8: 7d: b7 inet addr: 192.168.1.33 Bcast: 192.168.1.255 Маска: 255.255.25 inet6 addr: fe80 :: 1e6f: 65ff: fed8: 7db7/64 Сфера применения: Ссылка UP BROADCAST RUNNING MULTICAST MTU: 1500 Метрическая: 1 RX-пакеты: 1096637 ошибок: 0 сброшено: 259 перерасходов: 0 кадров: 0 TX-пакеты: 70353 ошибки: 0 сброшено: 0 перерасходов : 0 носитель: 0 столкновения: 0 txqueuelen: 1000 RX байт: 172696685 (172,6 MB) TX байт: 14938460 (14,9 MB) и порты, как этого –

ответ

0

Хорошо, на основе полученных рекомендаций искать ошибку в журналах, я нашел сообщение «* Там есть что-то не так с вашей системой - пожалуйста, проверьте, ORACLE_HOME и LD_LIBRARY_PATH устанавливаются и указывают на правильные каталоги *», и я решил пройти через сложный процесс установки Oracle InstantClient и переустановить пакет OCI8, после того, как модели из st-curriculum.oracle - с очень небольшими изменениями, а именно:

  1. База данных Oracle 11g R2 XE и сервер Apache2/PHP ha был установлен aproori на сервере и системе Ubuntu 13.10 (с предварительным заказом, файлом подкачки, параметрами ядра, восстановлением ошибок памяти, библиотеками и эмулятором chkconfig), как описано во многих сообщениях.

  2. Я остановился apache2 сервер

    service apache2 stop 
    

    и начал DRCP пул соединений, как в st-curriculum.oracle.com

  3. Я создал пользователя с именем PHPHOL (и альтернативный пример установки HR схемы Oracle, если это еще не сделано при установке oracle)

  4. Далее я загрузил пакеты Instant и SDK Instant Client из OTN: oracle.com/technetwork/database/features/instant-client/index-100365.h tml и распаковать пакеты в $ ORACLE_HOME, (/u01/app/oracle/product/11.2.0/xe)

  5. Затем я загрузил пакет OCI8 из pecl.php.нетто/пакет/oci8 и установлен в/Opt/oci8 в instantclient

    phpise 
    ./configure --with-oci8=instantclient,/u01/app/oracle/product/11.2.0/xe/instantclient_11_2 
    make/make install 
    
  6. Я установил путь оракул среды как в oracle technote

    export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe   
    LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/instantclient_11_2 
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH=/opt/oci8/modules 
    
    nano /etc/ld.so.conf.d/oracle.conf 
    

    и вставить:/u01/приложение/оракул/продукта/11.2.0/Xe/instantclient_11_2

    nano /etc/ld.so.conf.d/oci8.conf 
    

    и вставки:/Opt/OCI8/модули

    nano /etc/ld.so.conf.d/shared.conf 
    

    и вставьте установленное общее расширение местоположение:/USR/Библиотека/php5/20121212

    ldconfig 
    
  7. Далее я редактировал файл php.ini конфигурации добавить: расширение = oci8.so, установите дату. директива часовой пояс и добавил также OCI8 класс 1,4 расширения: oci8.connection_class = MYPHPAPP (для примеров st-curriculum.oracle.com см ссылку выше)

  8. Я сделал ссылку: $ ORACLE_HOME/instantclient_11_2/libclntsh.so .11.1. точки до $ ORACLE_HOME/instantclient_11_2/libclntsh.so

  9. Restart Oracle база данные и служба Apache на сервере Ubuntu 13.10

    /etc/init.d/oracle-xe force-reload 
    service apache2 start 
    
  10. Я проверил в phpinfo() для oci8 была включена, и я сделал подключение .php файл как:

    $conn = oci_connect("hr", "hr", "localhost/xe"); 
    

или как один из примера st-curriculum.oracle.com.

С другого компьютера в той же сети я подключен через браузер к базе данных оракула на сервере Ubuntu, и я получил

Подключение к Oracle!

Я надеюсь, что эта помощь

Смежные вопросы