Ошибка Oracle 11.1.0.7 и WAMP oci_connect

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

Я запускаю последнюю 32-битную версию от WAMP (я набрал ее сегодня снова, чтобы проверить). Машина db также 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 

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

Рассматривая конфигурацию, у вас установлены как клиент 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 является «более высокой» на вашем пути, чем библиотеки Instant Client.

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

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

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

  1. выполнить «phpinfo ()»;
  2. в «Configure Command» вы увидите что-то вроде: «–with-pdo-oci = C: \ php-sdk \ oracle \ instantclient10 \ sdk, shared» "–with-oci8 = C: \ php-sdk \ oracle \ instantclient10 \ sdk, shared "" –with-oci8-11g = C: \ php-sdk \ oracle \ instantclient11 \ sdk, общий "… до сих пор нормально!
  3. загрузите Oracle «Instant Client для Microsoft Windows 32-bit» и ваш «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: дополнительные файлы заголовков и пример makefile для разработки приложений Oracle с Instant Client: instantclient-sdk-win32-11.1.0.7.0.zip "3.4 распаковать два ZIP в одной папке, после распаковки вы увидите SDK в папку instantclient_11; до здесь OK!
  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.