Intereting Posts

Включение PDO OCI

Я пытался установить OCI, поэтому я могу использовать новый PDO («oci: dbname …

После 1,5-го боя я установил oracle instantclient (basic и sdk), а затем oci для php (как описано здесь http://ubuntuforums.org/showthread.php?t=92528 ).

Теперь я немного смущен, потому что мой PHPinfo сообщает, что поддержка OCI8 включена, но в разделе PDO есть только odbc в разделе «PDO drivers».

Когда я ошибся?

PS У меня XUBUNTU 12.10 и следующие пакеты: php-pear, php5, php5-cli, php5-common, php5-dbg, php5-dev, php5-odbc

Редактировать: Спасибо, что объяснили. Теперь я пытаюсь установить «pdo_oci» следующим образом: http://lacot.org/blog/2009/11/03/ubuntu-php5-oci8-and-pdo_oci-the-perfect-install.html

и теперь ссылаюсь на это:

/usr/local/src/PDO_OCI-1.0# ./configure –with-oci8 = instantclient, / opt / oracle / instantclient, 12.1

Я получаю следующую ошибку:

configure: ошибка: Oracle-OCI нужны библиотеки, не найденные в / opt / oracle / instantclient

Интересно, будет ли делать это на Windows не проще.

Следует отметить, что существуют два совершенно разных расширения PHP, предназначенные для подключения к базам данных Oracle:

  • OCI8 – это расширение, разработанное Oracle Corporation. Он активно поддерживается, и это рекомендуемый способ взаимодействия с Oracle.

  • PDO_OCI – это драйвер PDO, разработанный сообществом. Это никогда не заканчивалось, и на самом деле это было отброшено (таким образом, в документации было указано предупреждение ЭКСПЕРИМЕНТАЛЬНОЕ ).

Оба они содержат термин OCI (Oracle Call Interface), поскольку оба они используют внутренне API OCI, предоставляемые Oracle. Таким образом, вам нужен Oracle Instant Client независимо от того, какую библиотеку вы выберете. Но тогда вам нужно установить соответствующие пакеты PHP.

В вашем случае вы устанавливаете OCI8, а затем пытаетесь запустить PDO-код.

Если у вас возникли проблемы с установкой библиотеки php_pdo_oci либо с помощью pecl, либо с помощью компиляции из источника, этот класс pdooci в github может помочь. Единственное различие заключается в том, как вы создаете экземпляр своего объекта pdo. Меняться от:

 $pdo = new PDO("oci:dbname=mydatabase;charset=utf8", "user", "password"); 

чтобы:

 $pdo = new PDOOCI\PDO("mydatabase", "user", "password"); 

Остальные должны работать точно так же, как если бы вы использовали объект PDO.

Вам все еще требуется расширение php_oci8, но поскольку это расширение активно поддерживается и обычно является частью хранилищ ОС, это не должно быть проблемой для установки.