Проблема с установкой php_pdo_oci в Ubuntu 14.04.1 LTS

Мне нужно установить PDO_OCI для PHP на моем локальном хосте (Ubuntu). Я не эксперт в пакетах / зависимостях Linux, поэтому, пожалуйста, поправьте меня, если где-то в моих мыслях я ошибаюсь. Когда я пытаюсь использовать pecl (sudo pecl install pdo_oci) это говорит:

pear/PDO_OCI requires PHP extension "pdo" (version >= 1.0)

но верю PDO установлен (ls -la /usr/lib/php5/20121212/ | grep -c pdo.so говорит 1). В Интернете я нашел учебник по сборке pdo_oci ( http://bencornwell.com/112/), поэтому я последовал и с некоторой борьбой получил pdo_oci.so, К сожалению, он не загружается, давая мне сообщение:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/pdo_oci.so' - /usr/lib/php5/20121212/pdo_oci.so: undefined symbol: php_pdo_stmt_delref in Unknown on line 0

Я предполагаю, что это может быть что-то с несовместимостью версии php / pdo_oci, но у меня нет знаний и опыта, чтобы знать, как справиться с этой ситуацией.
Что я могу сделать, чтобы сделать эту работу?

Информация о моей системе:
Ubuntu 14.04.1 LTS
PHP 5.5.9-1ubuntu4.5 (cli) (сборка: 29 октября 2014 г., 11:59:10)

2 ответа

Решение

Я считаю, что справился с этим сам. Было две вещи, которые мне нужно было изменить.
1. pdo_oci.so загружался до pdo.so. Я изменил порядок, и сообщение об ошибке было изменено.
2. Я скомпилировал pdo_oci непосредственно из исходного кода для своей версии php (я следовал инструкциям на: http://blog.appwhoosh.com/install-pdo_oci-oci8-extensions-for-ubuntu-14-10/).
Теперь расширение работает отлично.

После установки драйверов Oracle вы можете использовать этот класс здесь, а затем вам просто нужно изменить соединение PDO с чем-то вроде

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

в

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

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

Другие вопросы по тегам