Ошибка Oracle 11.1.0.7 и WAMP oci_connect - PullRequest
3 голосов
/ 01 февраля 2012

Я пытаюсь настроить простое соединение между моим локальным сервером WAMP и некоторым Oracle 11.1.0.7, который у меня есть. Очевидно, PHP имеет всевозможные решения и магические ситуации, когда он не запускается.

Я использую последнюю 32-битную версию от WAMP (сегодня я снова загрузил ее, чтобы проверить) Машина БД также 32-битная, а не локальная

Вот мои попытки подключения к базе данных, каждый раз, когда я получаю одну и ту же ошибку:

    $db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = some.ip.addr)(PORT = 1521)))(CONNECT_DATA=(SID=somesid)))";
    //$link = oci_connect('sqlmap', 'sqlmap', 'some.ip.addr') OR die('oci_connect' . print_r(oci_error()));
    //$link = oci_connect('sqlmap', 'sqlmap', $db) OR die('oci_connect error' . print_r(oci_error()));
    //$link = oci_connect('sqlmap','sqlmap', 'some.ip.addr/somesid') or die('<= oci_connect ' . print_r(oci_error()));
    //$link = oci_connect('sqlmap','sqlmap', '//some.ip.addr/somesid') or die('<= oci_connect ' . print_r(oci_error()));
    $link = oci_connect('sqlmap','sqlmap', '//some.ip.addr/somesid');

Warning: oci_connect() [function.oci-connect]: ORA-24315: illegal attribute type in


Array ( [code] => 24315 [message] => ORA-24315: illegal attribute type [offset] => 0 [sqltext] => ) oci_connect1

Еще немного информации относительно OCI

OCI8 Support    enabled
Version 1.4.7
Revision    $Revision: 321634 $
Active Persistent Connections   0
Active Connections  0
Oracle Run-time Client Library Version  10.2.0.1.0
Oracle Instant Client Version   11.2
Temporary Lob support   enabled
Collections support enabled

Directive   Local Value Master Value
oci8.connection_class   no value    no value
oci8.default_prefetch   100 100
oci8.events Off Off
oci8.max_persistent -1  -1
oci8.old_oci_close_semantics    Off Off
oci8.persistent_timeout -1  -1
oci8.ping_interval  60  60
oci8.privileged_connect Off Off
oci8.statement_cache_size   20  20


Apache Version :
2.2.21  
PHP Version :
5.3.9

Мне бы очень хотелось, чтобы кто-нибудь намекнул мне, чего мне не хватает

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Если посмотреть на вашу конфигурацию, у вас установлены и клиент Oracle, и клиент Oracle Instant Client:

Oracle Run-time Client Library Version  10.2.0.1.0
Oracle Instant Client Version   11.2

Однако мой опыт показывает, что PHP будет использовать только одну или другую - в основном, какой бы набор библиотек не был найден первым, он будет использован. Поскольку вы можете нормально подключаться к Oracle 10g, но не к 11g, это говорит о том, что клиентская библиотека 10g "выше" на вашем пути, чем библиотеки мгновенных клиентов.

Два варианта, которые я бы предложил изучить:

  1. Установить полный клиент Oracle 11g
  2. В частности, измените ваш путь, чтобы сначала были найдены библиотеки Instant Client - конечно, убедитесь, что вы влияете на эффективный путь, используемый PHP, а не только на переменную PATH в отдельном контексте ...

У меня никогда не было правильной работы PHP с Instant Client - я отказался и установил полный клиент - так что моя личная рекомендация - вариант 1, но если это не практично в вашей среде, сначала поработайте с PATH.

0 голосов
/ 10 сентября 2014
  1. выполнить "phpinfo ()";
  2. в «Настроить команду» вы увидите что-то вроде: «--with-pdo-oci = C: \ php-sdk \ oracle \ instantclient10 \ sdk, shared» »--with-oci8 = C: \ php -sdk \ oracle \ instantclient10 \ sdk, общий доступ "" --with-oci8-11g = C: \ php-sdk \ oracle \ instantclient11 \ sdk, общий доступ "... до сих пор хорошо!
  3. Загрузите Oracle «Instant Client для 32-битной Microsoft Windows» и ваш «SDK» из http://www.oracle.com/technetwork/topics/winsoft-085727.html, даже если ваша Windows является 64-битной: 3.1 загрузить «Instant Client Package - Basic: все файлы, необходимые для запуска приложений OCI, OCCI и JDBC-OCI: instantclient-basic-win32-11.1.0.7.0.zip» 3.2 загрузить "* Instant Client Package - SDK: дополнительные файлы заголовков и пример make-файла для разработки приложений Oracle с Instant Client: instantclient-sdk-win32-11.1.0.7.0.zip" 3.4 распакуйте два zip-файла в одну и ту же папку, после распаковки вы увидите SDK-файл в папке instantclient_11; пока здесь хорошо!
  4. скопировать эту распакованную папку в C: \ Windows \ SysWOW64 \ instantclient_11_1
  5. создайте C: \ php-sdk \ oracle \ instantclient11 и скопируйте содержимое C: \ Windows \ SysWOW64 \ instantclient_11_1 в C: \ php-sdk \ oracle \ instantclient11
  6. Теперь добавьте в переменную среды Windows переменную PATH следующее: «C: \ Windows \ SysWOW64 \ instantclient_11_1»
  7. И, наконец, откройте Wamp и включите расширение php_oci8_11g
  8. Проверьте "phpinfo ()" еще раз; Оно работает! Зачем??? Поскольку C: \ wamp \ bin \ php \ php5.3.13 \ ext \ php_oci8_11g.dll или C: \ wamp \ bin \ php \ php5.3.13 \ ext \ php_oci8.dll являются 32-разрядными библиотеками DLL; в 64-битной среде, когда вашей Windows требуется 32-битная версия «Oracle Instant Client», она будет искать в C: \ Windows \ SysWOW64.
...